奇妙な動作をしているServer 2012 R2 Standard 64ビット仮想マシンがあります。Batファイルは正常に機能し、CMDウィンドウは正常に閉じます。ただし、batファイルの実行中にbatファイルを含むフォルダーが閉じられると終了しますが、CMDウィンドウは閉じません。これを単純化して、可能な限り単純なbatファイルを作成しました。1行が含まれています。一時停止
- Windowsエクスプローラーでbatファイルを含むフォルダーを開きます
- batファイルをダブルクリックして開始します
- Windowsエクスプローラーウィンドウを閉じる
- CMDウィンドウで任意のキーを押します
- batファイルが終了すると、カーソルは次の行に移動します
- CMDウィンドウが残る
これは1台のマシンでのみ発生します。なぜこれが起こるのか誰にも分かりますか?これはテストVMであり、再構築する必要があるかもしれませんが、興味があります。ありがとう
単純なbatファイルを次のものを含むファイルに置き換えました。
@assoc .bat
@for /F "tokens=1,* delims==" %%G in ('assoc .bat') do @ftype %%H
@reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId, ProcessID
@echo please close Windows Explorer before continuing
@pause
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId, ProcessID
@pause
結果は以下のとおりです。
.bat=batfile
batfile="%1" %*
CommandLine ParentProcessId ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" " 1608 8460
please close Windows Explorer before continuing
Press any key to continue . . .
CommandLine ParentProcessId ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" " 1608 8460
Press any key to continue . . .
コマンドライン
04/13/2016これを行う際にタスクマネージャーを見ると、もう少しわかりました。batファイルを起動すると、タスクマネージャー-詳細ウィンドウに2行が表示されます... cmd.exeに1行、conhost.exeに1行。バットが終了すると、cmd.exeは消えますが、conhost.exeは残ります。もう1つ気づいたのは、前述のようにWindowsエクスプローラーフォルダーを終了する必要がないことです。エクスプローラーウィンドウの任意の場所をクリックするだけです。Explorerウィンドウのどこもクリックしなかった場合、batファイルのCMDウィンドウは通常通り閉じ、期待どおりに両方のタスクが詳細ウィンドウから消えます。
exit
、CMDウィンドウを閉じるコマンドを明示的に述べたため、VMの1つでも同じ問題が発生しました。これが役立つかもしれません。