• ベストアンサー

バッチファイルでカレントディレクトリ変更の成功失敗が知りたい

バッチファイルをCドライブ上で起動します。 バッチ処理の過程で、カレントディレクトリをDドライブ上の所定のフォルダへ変更したいのですが、 バッチを起動する端末により、DドライブやDドライブがあってもその先のフォルダが存在しない場合があります。 その様な場合は、Dドライブへの移動をやめ、別処理を行いたいのですが、ディレクトリ移動の成功失敗を感知し、結果によって処理を自動で分けるよい方法はないでしょうか? ▼行う処理 d: cd temp (ここで、d:\tempへ移動して欲しいのですが、dが無かったり、tempが無かったりします) 10:  (移動成功のとき) (移動成功のときの処理) 20:  (移動失敗のとき) (終了)

質問者が選んだベストアンサー

  • ベストアンサー
  • kazu1973
  • ベストアンサー率40% (14/35)
回答No.1

existで行けるような気がします。 例 if exist d:\temp (移動成功のときの処理) else 移動失敗のとき

参考URL:
http://ykr414.com/dos/dos05.html
April8
質問者

お礼

出来ました! existを使用するとは盲点でした。 他の処理で使ってるのにうかつでした(>_<) 的確なご回答ありがとうございました。

その他の回答 (2)

回答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)がラベルとして使えるかは僕もしりませんので。。 頑張ってください。

April8
質問者

お礼

直前のエラーを%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