it-swarm.com.ru

Как автоматически закрыть окно cmd после выполнения пакетного файла?

Я запускаю командный файл, который имеет эти две строки: 

start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Этот пакетный файл используется для запуска приложения Xming, а затем приложения PuTTY, чтобы я мог получить SSH в компьютерную лабораторию моего университета.

Однако, если я запускаю это, а Xming еще не открыт, после выхода из терминала PuTTY окно cmd остается открытым. Только если я уже запустил Xming, окно cmd закрывается при закрытии терминала PuTTY. Я попытался добавить exit в последнюю строку командного файла, но безрезультатно.

54
yiwei

Измените пакетный файл на START обе программы вместо STARTing одной и CALLing другой

start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Если вы запустите его так, окно CMD не останется открытым после запуска программы.

87
Ahmad

Для новичков смотреть: -

  • Вы обычно заканчиваете командный файл строкой, которая просто говорит о выходе

* Если вы хотите убедиться, что файл запущен и что окно DOS закрывается через 2 секунды, вы можете добавить строки:

тайм-аут 2> нуль

Результат

  • Но .... команда выхода не будет работать, если ваш командный файл откроет другое окно - потому что, когда второе окно открыто, старое окно DOS также будет отображаться. 

РЕШЕНИЕ: Например, есть отличная небольшая бесплатная программа под названием BgInfo, которая будет отображать всю информацию о вашем компьютере. Предположим, что он находится в каталоге с именем C:\BgInfo. Чтобы запустить его из командного файла с ключом "/ popup" ..... И чтобы окно DOS закрылось после этого, пока оно еще работает, используйте:

запустите "" "C:\BgInfo\BgInfo.exe"/popup

Результат

6
Adrian747

Это сработало для меня. Я просто хотел закрыть командное окно автоматически после выхода из игры. Я просто дважды щелкаю по файлу .bat на рабочем столе. Нет ярлыков.

taskkill /f /IM Explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start Explorer.exe
exit /B
2
scrappy

Добавьте этот код в конце кода выполнения

c:\Windows> выход

0
Shyam99

Если вы хотите разделить команды на одну команду для каждого файла, вы можете сделать

cmd /c start C:\Users\Yiwei\Downloads\PuTTY.exe -load "MathCS-labMachine1"

а в другом файле вы можете сделать 

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Команда cmd/c закроет окно командной строки после запуска exe. 

0
Jenna Leaf

Вы можете попробовать несколько опасный: taskkill /IM cmd.exe ..dangerous bcz, который убьет открытый cmd и любой открытый перед этим cmd.

Или добавьте подтверждение, чтобы подтвердить, что у вас был правильный cmd.exe, а затем уничтожьте его с помощью PID, например:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

Замените (pslist &&A) или (tasklist /FI "PID eq %%A") на (taskkill /PID %%A), если вы хотите сначала проверить его (и, возможно, установить pstools).

0
treacle