Japanese / English
コマンド名と同じ名前のバッチファイルは作成しない
ping.batという名前のバッチファイル内で

ping 192.168.1.1
というコマンドを実行するバッチファイルを作成します。そして、このバッチファイルが保存されているディレクトリに移動し、ping.batを実行します。
pingコマンドが実行されるかと思いきや、下図のような現象が起こります。
pingコマンドが何度も実行されているように見えますが、結果の出力はされていません。また、無限ループしているようなので ctrl + c で強制終了しています。

コマンド名と同じ名前のバッチファイルは作成しない
コマンド名と同じ名前のバッチファイルは作成しない

これは、同じ名前のファイルが存在した場合(この例の場合、ping.exeとping.bat)は、ある優先順位の順序に従ってファイルを検索し実行するためにこのような現象が起こります。
この優先順位は、まずカレントディレクトリのファイル、そしてPATHEXTに設定されている拡張子順、というような順序になります。

PATHEXTを見るには

set | find "PATHEXT" 
とすると見ることができます。下図は私のPCのPATHEXTの設定です。
優先順位は、左が一番高く、右に行くほどさがっていきます。

コマンド名と同じ名前のバッチファイルは作成しない
コマンド名と同じ名前のバッチファイルは作成しない

この例の場合、ping.batが保存されているディレクトリからping.batを実行していますので、バッチファイル内のpingコマンドは、カレントディレクトリに存在するping.batファイルのことを指していることになります。
ですので、ping.batというファイル内でping.batを実行していることになり、上図のような無限ループに陥ります。

ただし、私のPCのPATHEXTの設定では、BATよりもEXEのほうが優先順位が高いため、ping.batを保存していないディレクトリからping.batを実行すれば意図したとおりにpingコマンドが実行されます。

このように、コマンドプロンプトで使用するコマンド名と同じ名前のバッチファイルを作成すると、意図と反する動きをすることがある場合があるので、コマンド名と同じ名前のバッチファイルは作成しないほうがいいです。

Back to top

Information
SEO対策 大阪  税理士 相談  税理士 守口市  税理士 大阪市  税理士 枚方市  自動車ガラス 神戸  シール印刷 神戸  ブリリアントアパートメント  株式会社CONFRAGE  英会話 個人レッスン 京都市右京区  京都市右京区西京区でマンツーマン英会話 
このページはCONFRAGEの著作物です。このページを複製・転載することを禁じます。CopyRight(C)2003-2016 CONFRAGE All rights reserved.