Jendela CMD tidak akan ditutup jika folder ditutup selama eksekusi file bat


17

Saya memiliki mesin virtual Server 2012 R2 Standard 64 Bit yang bertingkah aneh. File kelelawar berfungsi dengan baik dan jendela CMD tertutup secara normal; tetapi jika folder yang berisi file bat ditutup selama eksekusi file bat itu akan selesai tetapi jendela CMD tidak menutup. Saya telah menyederhanakan ini sampai memiliki file bat paling sederhana. Ini berisi 1 baris. jeda

  1. Buka folder yang berisi file bat dengan Windows Explorer
  2. Mulai file bat dengan mengklik dua kali
  3. Tutup jendela Windows Explorer
  4. Tekan tombol apa saja di jendela CMD
  5. Kursor bergerak ke baris berikutnya saat file bat selesai
  6. Jendela CMD tetap ada

Ini hanya terjadi pada satu mesin. Adakah yang tahu mengapa ini terjadi? Ini adalah tes VM dan mungkin harus dibangun kembali, tetapi saya penasaran. Terima kasih

Saya mengganti file bat sederhana saya dengan yang berisi berikut ini:

@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

Hasilnya ditunjukkan di bawah ini:

.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 . . .

Garis komando

13/04/2016 Saya menemukan sedikit lebih banyak dengan melihat Task Manager saat melakukan ini. Ketika saya memulai file bat 2 baris muncul di Task Manager - Detail window ... 1 untuk cmd.exe dan 1 untuk conhost.exe. Ketika kelelawar selesai cmd.exe hilang, tetapi conhost.exe tetap. Satu hal lain yang saya perhatikan adalah Anda tidak benar-benar harus keluar dari folder Windows Explorer seperti yang saya katakan sebelumnya ... yang harus Anda lakukan adalah mengklik di mana saja di jendela Explorer. Jika saya tidak mengklik di mana saja di jendela Explorer, jendela CMD untuk file bat ditutup secara normal dan kedua tugas menghilang dari jendela rincian seperti yang kita harapkan.


2
Sayangnya saya tidak bisa membantu. Tetapi saya harus melengkapi Anda dalam memberikan pertanyaan yang ditulis dengan baik yang menggambarkan masalah Anda dengan tepat, saya berharap lebih banyak poster pertama kali meluangkan waktu untuk menulis pertanyaan yang ditulis dengan baik seperti ini. Tentu saja saya tidak dapat mereproduksi perilaku pada mesin Win 10 saya. Dan karena Anda hanya melihat perilaku pada satu mesin tertentu, mungkin sulit bagi siapa pun untuk mendiagnosis apa yang sedang terjadi.
dbenham

Terima kasih @benham. Saya menghargai pengetahuan dan kebijaksanaan yang Anda berikan pada SO di bawah tag file batch. Jadi saya poster pertama kali di sini di Super User tapi saya tahu apa yang Anda maksud tentang poster baru. Ya, saya setuju bahwa tidak mungkin seseorang dapat menggandakan ... hanya berharap mungkin orang lain mungkin menemukan ini. Itu hanya tes VM jadi tidak penting. Hanya ingin tahu apa itu kalau-kalau itu terjadi pada mesin pelanggan.
RGuggisberg

1
@RGuggisberg - Pastikan Anda menggabungkan akun Anda sehingga Anda dapat mengedit pertanyaan Anda sendiri. Anda tidak perlu menambahkan indikasi Anda mengedit pertanyaan Anda, sistem melakukan itu untuk Anda, sama sekali tidak perlu.
Ramhound

1
Saya juga memiliki masalah yang sama pada salah satu VM saya, sebagai solusinya saya secara eksplisit menyebutkan exitperintah untuk menutup jendela CMD. Mungkin ini bisa membantu.
manjesh23

1
Sudahkah Anda mencoba fitur Analisis Rantai Tunggu dari Monitor Sumber Daya untuk menentukan aplikasi mana yang sedang menunggu proses ConHost.exe?
Xtremity

Jawaban:


1

Ini tidak mungkin tetapi Anda tampaknya telah mengesampingkan semua hal yang mungkin. Periksa dua entri registri berikut untuk melihat apakah mereka mengandung sesuatu:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

atau

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor

Apa pun yang ada di sana akan dipanggil setiap kali Anda menjalankan file batch, dan jika memiliki cmd /kitu akan menyebabkan perilaku ini.


Terima kasih ... bukan itu juga. Itu hanya mesin uji, jadi saya tidak lagi mencoba mencari tahu.
RGuggisberg

0

Sudahkah Anda mencoba ini?

@echo off
rem some code
pause
cls
exit

Hal yang sama, tetapi memungkinkan sama seperti jeda dan keluar dengan sendirinya.

Juga, mengapa Anda meletakkan @ di depan segalanya? Mengapa tidak menggunakan @echo sebelum perintah lainnya?


Ya .. sudah mencobanya. Setuju pada kata pengantar @. Biasanya itulah yang saya lakukan. Tidak masalah untuk ini. Mungkin ada di sana untuk beberapa pengujian awal untuk melihat perintah.
RGuggisberg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.