私の のディレクトリの下に というC:\Users\ME
ディレクトリがありますC:\Users\ME\Invoices
。ここに簿記などを保存します。ただし、*.bat
というファイルを作成しましたInvoices.bat
。このファイルがどこにあるかは皆さんご存じだと思いますが、ファイルには次のスクリプトがありました。
start C:\Users\ME\Invoices
何らかの理由で、Windows CMD がループし、CMD プロンプトを生成し続けました。幸い、コンピュータはクラッシュせず、ウィンドウを閉じました。しかし、この問題は、もちろん私の にも興味をそそりましたPATH=C:\Users\ME
。システムが何を開始すればよいのか混乱したのでしょうか。それとも、偶然ファイル名が同じだったため、*.bat
ファイル名を に変更しBookkeeping.bat
たら問題なく実行されたのでしょうか。この問題について、偶然なのか、それとも同じ名前のエラーなのか、あなたの考えを知りたいです。explorer.exe を実行中と実行していない両方の状態で試したことを記しておきます。
答え1
からstart
最初のトークンに拡張子が含まれていないコマンド ラインを実行する場合、CMD.EXE は PATHEXT 環境変数の値を使用して、検索する拡張子と順序を決定します。PATHEXT 変数の既定値は次のとおりです。
.COM;.EXE;.BAT;.CMD
Notice the syntax is the same as the PATH variable, with
semicolons separating the different elements.
そしてまた
実行可能ファイルを検索するときに、拡張子が一致しない場合は、名前がディレクトリ名と一致するかどうかを確認します。一致する場合、START コマンドはそのパスでエクスプローラーを起動します。コマンド ラインから実行した場合、そのパスに対して CD /D を実行するのと同じです。
そうです、ファイル名がフォルダ名と一致しているからです。