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


88

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

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 останется открытым. Окно cmd закрывается, только если я уже запустил Xming, когда я закрываю терминал PuTTY. Я пробовал добавить exitв последнюю строку командного файла, но безуспешно.


1
является "C:\Program Files (x86)\Xming\Xming.exe"параметром , от putty.exe, или отдельная команда?
bpoiss

Если вторая строка является второй командой, попробуйте также добавить start перед ней.
Грей

1
@BernhardPoiss - это отдельная команда, а НЕ параметр для putty.exe. Если я поставлю эту строку первой, она зависнет и откроется замазка. Если я поставлю перед ним начало, в Windows появится сообщение «не удается найти C: \ Program». Убедитесь, что он
введен

Ответы:


134

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

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

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


28
+1 за исключением случаев, когда вы используете двойные кавычки для пути, вы должны добавить первый параметр, ""поскольку заголовок становится обязательным. Вторая команда должна быть, start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowиначе она попытается открыть командное окно с заголовком « C:\Program Files (x86)\Xming\Xming.exeПопытка выполнить :0с параметрами»-clipboard -multiwindow
Патрик Мейнеке

Также этот start /B "GCFScape" "x64\GCFScape.exe">nulпример был мне полезен
xacinay

4
«Если команда является внутренней командой cmd или пакетным файлом, то командный процессор запускается с переключателем / K на cmd.exe. Это означает, что окно останется после выполнения команды». ss64.com/nt/start.html
CAD bloke

3
@CADbloke Упомянутая вами проблема может быть решена с помощьюcmd.exe /C "start cmd.exe /C [...].bat ..."
Торстен Шёнинг

1
@ patrick-meinecke Спасибо за добавление комментария о "", я был разочарован тем, что это вызывает у меня проблемы. Я прочитал ваш комментарий, и последовал момент ага.
Майкл Икинс,

21

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

timeout 2 >nul
exit

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

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

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

на /popupсамом деле давал мне ошибку. После удаления все
Дмитрий Ефименко

4

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

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.


3

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

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

1

У меня было это, я добавил, EXITи сначала это не сработало, я думаю, из-за необходимости called program exitingсовета, упомянутого в другом ответе здесь, однако теперь он работает без дальнейших церемоний - не уверен, что это вызвало, но следует отметить, что я вызов файла данных , .htmlа не программа , которая обрабатывает это browser.exe, я не прав что - нибудь еще , но достаточно сказать , что это гораздо аккуратнее только с помощью файла летучей мыши , чтобы получить доступ к основным страницам доступа этих веб - документов и только имея title.bat, contents.bat, index.batв корневой папке с остальным содержимым во вложенной папке.

т.е.: contents.bat читает

cd subfolder
"contents.html"
exit

Также будет лучше, если я изменю значки файлов летучей мыши только для этих элементов, чтобы они соответствовали контексту, в котором они находятся, но это другое дело, скрывая файлы летучих мышей во вложенной папке и создавая для них ярлыки пользовательских значков в корневой папке с изображениями. призывал к настройке также скрыт.


0

Вы можете попробовать несколько опасный: 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

Просто попробуйте, /sкак указано ниже.

В качестве последней строки в типе пакетного файла:

exit /s

Приведенная выше команда закроет окно Windows CMD.

/s - означает беззвучный, как в (ожидание ввода с клавиатуры).


1
cmd«S выход команды не имеет /sпереключатель (и это было бы бессмысленно в любом случае)
Stephan

-1

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

c: \ windows> выход


1
Вы прочитали последнее предложение вопроса ?:I've tried adding exit to the last line of the batch file, but to no avail.
Стефан

Я добавил exit в конец своего скрипта, и он фактически решил мою проблему.
Аттила
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.