• ベストアンサー

OSのバージョンでバッチ処理がうまく行かない場合があります

IF EXIST "C:\aaa\" GOTO GO GOTO faild :GO RENAME C:\aaa\bbb.dll bbb.dll.old 上記のようなバッチ処理を書きました。 このバッチが2000とXPではきちんと動くのですが、Meと98では動きません。 Meと98では、C:\aaaというフォルダが存在するにも関わらず、 faildの処理に移行してしまい、リネームが行われません。 どのように書けば、Meや98でも上手く動くでしょうか? 自分のPCが2000なので、なかなか動作確認が難しいです。 よろしくお願い致します。 (pauseを使って調査してみて、おそらくエラーはここなのですが、もしかしたら違う箇所かも知れません。  補足も致しますので、お助けいただけると助かります!)

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

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

>IF EXIST "C:\aaa\" GOTO GO Windows 98SEで下記4つのコマンドを試してみましたが、"C:\WINDOWS"ディレクトリが存在するにもかかわらず、"if exist"文では何も表示されず、"if not exist"文で"Not Exist"と表示されます。 if exist c:\windows echo "Exist" if exist c:\windows\ echo "Exist" if not exist c:\windows echo "Not Exist" if not exist c:\windows\ echo "Not Exist" どうやら、98の"if exist"コマンドは、ヘルプ表示にある通りに、本当に『ファイルのみ』に限定された構文のようですので、"C:\aaa\bbb.dll"とファイル名を指定してIF文を使うようにしたらどうでしょうか? (2000/XPのヘルプ表示にも『指定されたファイルが存在するとき真』と表示されますから、2000/XPでディレクトリの存在判定が出来るのは、2000/XPのコマンドプロンプトで機能が拡張された部分かもしれません。)

-yellowtail-
質問者

お礼

お早いご回答、ありがとうございます!! おっしゃるとおり、ファイルのみのようですね~。 回答者様のアドバイスどおり、ファイルで存在判定してみましたら、XP/98ともに上手く動きました。 ありがとうございました(^-^)

関連するQ&A