У мене є 64-бітова віртуальна машина Server 2012 R2 Standard, яка діє дивно. Файли з bat працюють нормально, і вікно CMD нормально закривається; але якщо папка, що містить файл bat, закрита під час виконання файлу bat, вона закінчиться, але вікно CMD не закриється. Я спростив це, щоб отримати найпростіший можливий файл bat. Він містить 1 рядок. пауза
- У Windows Explorer відкрийте папку, що містить файл bat
- Запустіть файл bat, двічі клацнувши на ньому
- Закрийте вікно Провідника Windows
- Натисніть будь-яку клавішу у вікні 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 . . .
Командний рядок
13.04.2016 я дізнався трохи більше, переглянувши диспетчера завдань, роблячи це. Коли я запускаю файл bat, у вікні диспетчера задач з'являються 2 рядки ... 1 для cmd.exe і 1 для conhost.exe. Коли кажан закінчується, cmd.exe відходить, але conhost.exe залишається. Ще одне, що я помітив, це те, що вам не потрібно виходити з папки Провідника Windows, як я вже зазначив ... все, що вам потрібно зробити, це натиснути будь-де у вікні Провідника. Якщо я не натискаю ніде у вікні Провідника, вікно CMD для файла bat закривається нормально, і обидві завдання зникають із вікна деталей, як ми очікували.
exit
команду закрити вікно CMD. Це може допомогти.