
バッチファイルをCドライブ上で起動します。
バッチ処理の過程で、カレントディレクトリをDドライブ上の所定のフォルダへ変更したいのですが、
バッチを起動する端末により、DドライブやDドライブがあってもその先のフォルダが存在しない場合があります。
その様な場合は、Dドライブへの移動をやめ、別処理を行いたいのですが、ディレクトリ移動の成功失敗を感知し、結果によって処理を自動で分けるよい方法はないでしょうか?
▼行う処理
d:
cd temp
(ここで、d:\tempへ移動して欲しいのですが、dが無かったり、tempが無かったりします)
10: (移動成功のとき)
(移動成功のときの処理)
20: (移動失敗のとき)
(終了)
No.1ベストアンサー
- 回答日時:
existで行けるような気がします。
例
if exist d:\temp (移動成功のときの処理)
else 移動失敗のとき
参考URL:http://ykr414.com/dos/dos05.html
出来ました!
existを使用するとは盲点でした。
他の処理で使ってるのにうかつでした(>_<)
的確なご回答ありがとうございました。
No.3
- 回答日時:
ああ、#1さんの回答の方が適切のようですね。
仮に私の方法で質問にかいてある「10」「20」をラベルとしてプログラムを書くと。。d:
if %ERRORLEVEL%==0(
cd d:\temp
if %ERRORLEVEL%==0(
goto 10
) else (
goto goto 20
)) else (
goto goto 20
)
:10
@rem 成功時の処理
:20
@rem エラー時の処理
数字(10や20)がラベルとして使えるかは僕もしりませんので。。
頑張ってください。
直前のエラーを%ERRORLEVEL%で取得できるとは
知りませんでした。
フォルダやドライブの存在確認以外でもきっとこれから役立てると思います。
ご丁寧な回答ありがとうございました。(^^)
*数字はラベルとして使用は出来ないっぽいです(^^;)コロンの位置も間違っており、失礼しました。
No.2
- 回答日時:
直前のコマンドの成功・失敗は環境変数%ERRORLEVEL%に格納されます。
通常、成功したら0、失敗したら1を返します。私もcdコマンドで試してみたところ、成功したら0、失敗(存在しないディレクトリを指定)したら1が帰りました。単にコマンドプロンプトで実験してみたいならば「echo %ERRORLEVEL%」とタイプしてみてください。
なお、質問の回答は以下です↓。
d:
if %ERRORLEVEL%==0(
cd d:\temp
if %ERRORLEVEL%==0(
ディレクトリが存在する場合のしょり
) else (
goto エラーラベル
)) else (
goto エラーラベル
)
:エラーラベル
エラー時の処理
でいいかとおもいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Google Drive Googleドライブでのファイルの移動 2 2022/11/01 14:23
- Windows 10 WindowsUpdateで再起動を阻止したいです 3 2023/03/15 22:41
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Google Drive Googleドライブについて 3 2022/05/19 18:00
- その他(データベース) Accessのリンクテーブルについて 1 2023/05/20 16:10
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- ノートパソコン PC内写真の切り取り&貼り付けの過程で写真が一部消えたかも? 1 2022/12/09 01:18
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
マクロで、次のコードへ行く前...
-
特定のファイルを他のプロセス...
-
vbaのエラー対応(実行時エラー...
-
どう増強すべきか
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
順番に処理させたい
-
シェルスクリプトでファイル内...
-
エクセル VBAで複数セル選択時...
-
入力した値が不正というよりイ...
-
VBA 複数の行を高速で削除する...
-
VBAの進捗状況をリアルタイ...
-
VBA Select Caseについて
-
COBOL OCCURSで指定したデータ...
-
aspx の同時処理数について教え...
-
エクセル画面のちらつきなくす...
-
VB6にてネットワーク上にある共...
-
【C#】Page_Loadさせない方法に...
-
エクセルファイルをフロッピー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
どう増強すべきか
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
途中で処理を中断させたい (ア...
-
エクセル VBAで複数セル選択時...
-
Functionで戻り値を複数返す方法
-
VBAでBook読み込み時の非表示方...
-
VBA 複数の行を高速で削除する...
おすすめ情報