У меня есть 64-разрядная виртуальная машина Server 2012 R2 Standard, которая работает странно. Файлы Bat работают нормально, и окно CMD закрывается нормально; но если папка, содержащая файл bat, будет закрыта во время выполнения файла bat, она завершится, но окно CMD не закроется. Я упростил это до такой степени, чтобы иметь самый простой файл bat. Содержит 1 строку. Пауза
- Откройте папку с файлом bat в проводнике Windows
- Запустите файл bat, дважды щелкнув по нему
- Закройте окно проводника Windows
- Нажмите любую клавишу в окне CMD
- Курсор перемещается на следующую строку, когда файл bat завершен
- Окно CMD остается
Это происходит только на одной машине. Кто-нибудь знает, почему это может быть? Это тестовая виртуальная машина, и, возможно, ее нужно просто перестроить, но мне это интересно. Благодарность
Я заменил свой простой файл 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-файл, в диспетчере задач появляются две строки: «Подробности» ... 1 для cmd.exe и 1 для conhost.exe. Когда летучая мышь заканчивается, cmd.exe уходит, но conhost.exe остается. Еще одна вещь, которую я заметил, это то, что вам на самом деле не нужно выходить из папки Windows Explorer, как я ранее говорил ... все, что вам нужно сделать, это щелкнуть в любом месте окна Explorer. Если я не нажимаю нигде в окне проводника, окно CMD для файла bat закрывается нормально, и обе задачи исчезают из окна сведений, как мы и ожидали.
источник
exit
команду для закрытия окна CMD. Может быть, это может помочь.Ответы:
Это маловероятно, но вы, кажется, исключили все вероятные вещи. Проверьте следующие две записи реестра, чтобы увидеть, содержат ли они что-либо:
или
Все, что там находится, будет вызываться каждый раз, когда вы запускаете командный файл, и если это так,
cmd /k
это будет вызывать такое поведение.источник
Вы пробовали это?
То же самое, но позволяет так же, как пауза и выход сам по себе.
Кроме того, почему вы ставите @ перед всем? Почему бы просто не использовать @echo off перед остальными командами?
источник