ฉันมีเครื่องเสมือน Server 2012 R2 Standard 64 บิตที่ทำหน้าที่แปลก ไฟล์ Bat ทำงานได้ดีและหน้าต่าง CMD ปิดตามปกติ แต่ถ้าโฟลเดอร์ที่มีไฟล์ bat ถูกปิดระหว่างการทำงานของไฟล์ bat มันจะเสร็จสิ้น แต่หน้าต่าง CMD จะไม่ปิด ฉันทำให้สิ่งนี้ง่ายขึ้นจนถึงจุดที่มีไฟล์ bat ที่เป็นไปได้ง่ายที่สุด มันมี 1 บรรทัด หยุด
- เปิดโฟลเดอร์ที่มีไฟล์ bat ด้วย Windows Explorer
- เริ่มต้นไฟล์ bat โดยดับเบิลคลิกที่ไฟล์
- ปิดหน้าต่าง Windows Explorer
- กดปุ่มใด ๆ ในหน้าต่าง CMD
- เคอร์เซอร์ย้ายไปที่บรรทัดถัดไปเมื่อไฟล์ bat เสร็จสิ้น
- หน้าต่าง CMD ยังคงอยู่
สิ่งนี้เกิดขึ้นในเครื่องเดียวเท่านั้น มีใครรู้บ้างไหมว่าทำไมถึงเป็นเช่นนั้น มันคือการทดสอบ 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 ฉันหาข้อมูลเพิ่มขึ้นอีกนิดโดยดูที่ Task Manager ขณะทำสิ่งนี้ เมื่อฉันเริ่มต้นไฟล์ค้างคาว 2 บรรทัดปรากฏขึ้นในหน้าต่างตัวจัดการงาน - รายละเอียด ... 1 สำหรับ cmd.exe และ 1 สำหรับ conhost.exe เมื่อค้างคาวเสร็จสิ้น cmd.exe จะหายไป แต่ conhost.exe ยังคงอยู่ สิ่งหนึ่งที่ฉันสังเกตเห็นคือคุณไม่จำเป็นต้องออกจากโฟลเดอร์ Windows Explorer ตามที่ระบุไว้ก่อนหน้านี้ ... สิ่งที่คุณต้องทำคือคลิกที่ใดก็ได้ในหน้าต่าง Explorer หากฉันไม่คลิกที่ใดก็ได้ในหน้าต่าง Explorer หน้าต่าง CMD สำหรับไฟล์ bat จะปิดลงตามปกติและทั้งสองงานจะหายไปจากหน้าต่างรายละเอียดตามที่เราคาดหวัง
exit
คำสั่งอย่างชัดเจนเพื่อปิดหน้าต่าง CMD อาจเป็นสิ่งนี้อาจช่วย