- ベストアンサー
実行制御のバッチ
バッチファイルの作成に関して質問です。 特定のフォルダの中のファイルを確認して自分のPC名と同じファイルがあったらその後の処理を中止するというようなバッチファイルのコマンドはありますでしょうか? また特定のファイル内(テキストファイルの本文など)に自分のPC名があったらその後の処理を中止するというようなことはできますでしょうか? 詳しい方ご教示お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2の方の後者のコマンド列はWindowsのコマンドプロンプトでは使えません。 catコマンドが標準では入っていませんから。 直すならこんな感じかな。 find /I "%COMPUTERNAME%" "特定のファイル" && exit 0 ツッコミついでに私の方も直すなら IF EXIST "path\%COMPUTERNAME%" GOTO :EOF FIND "%COMPUTERNAME%" "path\name" && GOTO :EOF って感じで。 ちなみに 「exit 0」は「バッチファイルを実行しているコマンドプロンプトを終了させる」で、「GOTO :EOF」は「バッチファイルの末尾にジャンプする」です。 前者の場合、コマンドプロンプト上から手動でバッチを実行した場合に、コマンドプロンプトが閉じてしまう欠点があります。
その他の回答 (3)
- kik0220
- ベストアンサー率66% (4/6)
> catコマンドが標準では入っていませんから。 ありゃ、こいつは失敗。 せっかく直していただいたのですが、自分としては type ”特定のファイル”|find /I "%COMPUTERNAME%"&&exit 0 に直したいところですね。 単にfindにファイル名を渡すのに慣れていないからですが、 dir /b ”特定のフォルダ”|find /I "%COMPUTERNAME%"&&exit 0 と一緒に並んでいると覚えやすいかなぁ、と。 こうすると、「文字列をパイプでfindに渡した結果を&&で受けてコマンドを実行」という応用もいつか使えるかもしれませんし。 ちなみに、「&&」を「||」にすると、逆の結果になります。 「"%COMPUTERNAME%"が含まれていなかったら終了」ですね。 #dirの/bの位置も間違えてました。あと、catに/bは要りませんね。
お礼
回答ありがとうございます。 色々な方法があるのですね。勉強になります。
- kik0220
- ベストアンサー率66% (4/6)
「自分のPC名」が「バッチファイルを実行しているPC」と同一だとすれば、1つのコマンドではありませんが、 dir ”特定のフォルダ” /b|find /I "%COMPUTERNAME%"&&exit 0 でできると思います。 特定のファイル内であれば、 cat ”特定のファイル” /b|find /I "%COMPUTERNAME%"&&exit 0 で。
お礼
回答ありがとうございます。 参考になりました。
- okgoripon
- ベストアンサー率44% (1141/2548)
>特定のフォルダの中のファイルを確認して自分のPC名と同じファイルがあったらその後の処理を中止する IF EXIST path\%COMPUTERNAME% GOTO :EOF (※pathの部分は「特定のフォルダ」のパスに書き換える) >特定のファイル内(テキストファイルの本文など)に自分のPC名があったらその後の処理を中止する FIND "%COMPUTERNAME%" path\name IF ERRORLEVEL==0 GOTO :EOF (※path\nameの部分は「特定のファイル」のパスに書き換える)
お礼
回答ありがとうございます。 とても参考になりました。
お礼
回答ありがとうございます。 細かい情報までありがとうございます。 さらに良くなったコマンドを知ることでとても助かりました。