Тримайте CMD відкритим після запуску файлу BAT


169

У мене є такий файл bat:

ipconfig

Це виведе IP-інформацію на екран, але перед тим, як користувач зможе прочитати цю інформацію, CMD закриється.

Я вважаю, що CMD припускає, що сценарій закінчено, тому він закривається.

Як зберегти CMD відкритим після завершення сценарію?



4
@RobKielty це ж питання добре - але тут у нас є нова відповідь (що краще IMHO)
alfasin


@alfasin Це не те саме, що відповідь Рутгера Ніджлунсінга?
Роб Кільті

@RobKielty ні, моя відповідь не є такою ж, як вона не використовує, pauseщо є хорошим способом вирішення (і саме тому я підтримав цю відповідь), але не такою, яка дійсно вирішує проблему, оскільки після натискання користувача Enterабо Spaceвікно закриється. ..
alfasin

Відповіді:


163

Залежно від того, як ви виконуєте команду, ви можете поставити /kпісля, cmdщоб вікно було відкритим.

cmd /k my_script.bat

Просто додавання cmd /kв кінець вашого пакетного файлу також буде працювати. Подяка Луїджі Д'Аміко, який розмістив про це у коментарях нижче.


14
Після всіх ваших сценаріїв у вашому файлі bat - put -> cmd / k
Луїджі Д'Аміко

3
Будьте уважні, якщо ваша програма містить синтаксичні помилки, вікно все одно закриється, якщо ви запустили його подвійним клацанням і поставите cmd /kв кінці.
Тобіас Фейл

Це не пояснює закриття вікон cmd, якщо користувач двічі клацнув файл.
K - Токсичність в SO зростає.

237

Помістіть pauseв кінці файлу .BAT.


7
Це саме те, що я шукав, тому що я запускаю файл bat при запуску, а не через команду CMD. +1
Хокі

3
Якщо ви все ще хочете взаємодіяти з файлом bat після вашого виконання, замініть PAUSE лише cmd / k - тоді після запуску сценаріїв ви зможете виконувати ручні команди згодом у тому ж контексті
Luigi D'Amico

Я не можу витримати, що це не було "рішення" коментаря до цього питання
newhouse

57

Просто додайте @pauseв кінці.

Приклад:

@echo off
ipconfig
@pause

Або ви також можете використовувати:

cmd /k ipconfig

5
що робить символ @? Чи є різниця між @pause та паузою?
demonicdaron

3
@demonicdaron Відповідь, що пояснює символ @: stackoverflow.com/a/21077142/2258
Річард Морган

Але в цьому випадку це не повинно мати ніякого значення.
Флоріан Лейтгеб

Різниця між @pauseі pauseможна побачити візуально в цій відповіді: stackoverflow.com/questions/17957076#60053224
ZygD

7

Додавання pause(Windows 7) до кінця не працювало для мене,
але додавання cmd /kперед моєю командою справді спрацювало.

Приклад:

cmd /k gradlew cleanEclipse

7

Коли файл .bat запускається не з командного рядка (наприклад, подвійне клацання).

echo The echoed text
@pause

при_паузі

echo The echoed text
pause

пауза

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

і_пауза


3

start cmd /kзробила магію для мене. Я фактично використовував його для підготовки програми phonegap для cordova, він виконує команду, показує результат і чекає, коли користувач закриє його. Нижче наведено простий приклад

start cmd /k echo Hello, World!

Що я використав у своїй справі

start cmd /k cordova prepare

Оновлення

Ви навіть можете мати назву для цього, використовуючи

start "My Title" echo Hello, World!


1

Якщо ви запускаєте скрипт у командному рядку, тоді додайте, exit /bщоб CMD залишався відкритим


Це практично не вирішує питання, оскільки модифікація ipconfigта інші вбудовані пакетні файли - дуже погана ідея .
robinCTS


1

Мене також бентежило, чому ми додаємо cmdна початку, і мені було цікаво, чи потрібно мені спочатку відкрити командний рядок. Що вам потрібно зробити, це ввести повну команду разом з cmd /k. Наприклад, припустимо, що ваше ім'я пакетного файлу - "my_command.bat", яке виконує команду, javac my_code.javaтоді код у вашому пакетному файлі повинен бути:

cmd /k javac my_code.java

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


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

друга команда зробить ваше вікно cmd не закритим. Важливим є те, що ви все ще можете ввести нову команду


0

Як сторонне позначення це також працює при запуску команди безпосередньо з панелі пошуку у вікнах.

наприклад, безпосередньо запущений ipconfigбуде безпосередньо закривати вікно cmd після завершення команди.

введіть тут опис зображення

Використання cmd \k <command>не буде - що я намагався зробити, коли знайшов цю відповідь.

введіть тут опис зображення

Він має додаткову перевагу завжди розпізнавати команду, яку ви намагаєтеся виконати. Наприклад, запущена echo hello worldз панелі пошуку не буде працювати, оскільки це не команда, проте cmd \k echo hello worldпрацює чудово.

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