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


1
це "C:\Program Files (x86)\Xming\Xming.exe"параметр із putty.exe, або окрема команда?
bpoiss

Якщо другий рядок є другою командою, спробуйте також додати старт перед цим.
Сірий

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
Patrick Meinecke

Крім того, цей start /B "GCFScape" "x64\GCFScape.exe">nulприклад був для мене корисним
xacinay

4
"Якщо команда є внутрішньою командою cmd або командним файлом, тоді процесор команд запускається за допомогою перемикача / K до cmd.exe. Це означає, що вікно залишиться після запуску команди." ss64.com/nt/start.html
хлопець із САПР

3
@CADbloke Вашу згадану проблему можна вирішити за допомогоюcmd.exe /C "start cmd.exe /C [...].bat ..."
Торстен Шенінг,

1
@ patrick-meinecke Дякую за додавання коментаря щодо "", я був розчарований тим, що це викликало у мене проблеми. Я прочитав ваш коментар, і настав момент "ха-ха".
Michael Eakins

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

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


0

Ви можете спробувати дещо небезпечний: taskkill /IM cmd.exe..небезпечний 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

Вищевказана команда закриє вікно CMD Windows.

/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.
Стефан

Я додав вихід у кінці свого сценарію, і це насправді вирішило мою проблему.
Аттіла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.