- ベストアンサー
バッチファイルでカレントディレクトリ変更の成功失敗が知りたい
バッチファイルをCドライブ上で起動します。 バッチ処理の過程で、カレントディレクトリをDドライブ上の所定のフォルダへ変更したいのですが、 バッチを起動する端末により、DドライブやDドライブがあってもその先のフォルダが存在しない場合があります。 その様な場合は、Dドライブへの移動をやめ、別処理を行いたいのですが、ディレクトリ移動の成功失敗を感知し、結果によって処理を自動で分けるよい方法はないでしょうか? ▼行う処理 d: cd temp (ここで、d:\tempへ移動して欲しいのですが、dが無かったり、tempが無かったりします) 10: (移動成功のとき) (移動成功のときの処理) 20: (移動失敗のとき) (終了)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
existで行けるような気がします。 例 if exist d:\temp (移動成功のときの処理) else 移動失敗のとき
その他の回答 (2)
- kamkamkam3
- ベストアンサー率42% (216/514)
ああ、#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%で取得できるとは 知りませんでした。 フォルダやドライブの存在確認以外でもきっとこれから役立てると思います。 ご丁寧な回答ありがとうございました。(^^) *数字はラベルとして使用は出来ないっぽいです(^^;)コロンの位置も間違っており、失礼しました。
- kamkamkam3
- ベストアンサー率42% (216/514)
直前のコマンドの成功・失敗は環境変数%ERRORLEVEL%に格納されます。 通常、成功したら0、失敗したら1を返します。私もcdコマンドで試してみたところ、成功したら0、失敗(存在しないディレクトリを指定)したら1が帰りました。単にコマンドプロンプトで実験してみたいならば「echo %ERRORLEVEL%」とタイプしてみてください。 なお、質問の回答は以下です↓。 d: if %ERRORLEVEL%==0( cd d:\temp if %ERRORLEVEL%==0( ディレクトリが存在する場合のしょり ) else ( goto エラーラベル )) else ( goto エラーラベル ) :エラーラベル エラー時の処理 でいいかとおもいます。
お礼
出来ました! existを使用するとは盲点でした。 他の処理で使ってるのにうかつでした(>_<) 的確なご回答ありがとうございました。