プロが教えるわが家の防犯対策術!

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

▼行う処理

d:
cd temp
(ここで、d:\tempへ移動して欲しいのですが、dが無かったり、tempが無かったりします)

10:  (移動成功のとき)

(移動成功のときの処理)

20:  (移動失敗のとき)

(終了)

A 回答 (3件)

existで行けるような気がします。



if exist d:\temp (移動成功のときの処理)
else 移動失敗のとき

参考URL:http://ykr414.com/dos/dos05.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/03/08 23:40

ああ、#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)がラベルとして使えるかは僕もしりませんので。。

頑張ってください。
    • good
    • 0
この回答へのお礼

直前のエラーを%ERRORLEVEL%で取得できるとは
知りませんでした。
フォルダやドライブの存在確認以外でもきっとこれから役立てると思います。
ご丁寧な回答ありがとうございました。(^^)
*数字はラベルとして使用は出来ないっぽいです(^^;)コロンの位置も間違っており、失礼しました。

お礼日時:2006/03/08 23:42

直前のコマンドの成功・失敗は環境変数%ERRORLEVEL%に格納されます。



通常、成功したら0、失敗したら1を返します。私もcdコマンドで試してみたところ、成功したら0、失敗(存在しないディレクトリを指定)したら1が帰りました。単にコマンドプロンプトで実験してみたいならば「echo %ERRORLEVEL%」とタイプしてみてください。

なお、質問の回答は以下です↓。
d:
if %ERRORLEVEL%==0(
cd d:\temp
if %ERRORLEVEL%==0(
ディレクトリが存在する場合のしょり
) else (
goto エラーラベル
)) else (
goto エラーラベル
)
:エラーラベル
エラー時の処理


でいいかとおもいます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!