Bat файл открывается и сразу закрывается

Обновлено: 04.07.2024

комментарии писал уже на форуме так-что не кричите на меня что типо изза коментов не робит батник. »

Берётесь писать комментарии — для них есть REM.

да,я знаю,похожая тема от меня уже была. там Iska предлогал более короткий вариант но я так и не допер как им пользоваться)) »

Спрашивайте, не стесняйтесь. Только там спрашивайте, не здесь.

Там мы проверяли длину строки. А здесь что Вы хотите сделать?

Не стоило. Лучше взять книжку страниц на тысячи полторы.

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Iska, Замечал много где пишут такие точки :: это тоже коментарий, где про этом ожно почитать? не. я имею виду что это как в школе. ты проучился среднюю школу пошел в старшую и ты учишься и чему-то даже смог научиться но вот вспомнить чему тебя учили в средней школе уже не можешь.
И тем не менее:
Цитата:
Код:
C:\Мои проекты\0119>setlocal enableextensions enabledelayedexpansion
Непредвиденное появление: ="10". »

а вот сейчас тот момент когда я понимаю что забыл поставить еще одно равно)))
теперь все норм.

Там мы проверяли длину строки. А здесь что Вы хотите сделать? »
Iska, Замечал много где пишут такие точки :: это тоже коментарий, где про этом ожно почитать? »

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

примерно тоже самое.
VAR- это переменная которая получается при вычислении длины строки. »
Не надо вычислять длину строки. Я же уже показал, как проверять длину строки на допустимые пределы в той теме: CMD/BAT - числовая переменная больше числа или нет. Iska, Что такое метка, для чего она? Ч ем это плохо? Iska, Я в ком. строке ввожу /? там ничего про это не написано. где можно почитать? Извините если не в тему.

Место в пакетном файле, на которое можно передать управление посредством goto или call.

Командная строка закрывается после выполнения команды

Во многих инструкциях на сайте для выполнения действий предлагается использовать команды в командной строке, в некоторых случаях — bat файл. Один из частых комментариев к таким материалам: командная строка сразу закрывается и нельзя ничего успеть увидеть.

В этой статье подробно о том, почему командная строка сразу закрывается, что делать, чтобы она не закрывалась применительно к Windows 11 и Windows 10 (актуально и для предыдущих систем), а также дополнительная информация на тему.

Почему командная строка закрывается и что делать, чтобы этого не происходило

Рассмотрим два случая, когда командная строка закрывается:

  • После выполнения введённой команды
  • После выполнения bat-файла

В первом случае почти всегда причиной является ввод команды не в командную строку, а в диалоговое окно «Выполнить», которое некоторые пользователи считают командной строкой, хотя это не так. Подробнее о том, как именно работают указанные системные элементы:

  1. Если вводить команду в окно «Выполнить» (вызываемое клавишами Win+R, либо через правый клик по кнопке «Пуск» в случае Windows 11 и 10), окно командной строки откроется и закроется сразу после выполнения, если дальнейший ввод пользователя не требуется.
  2. Если запустить непосредственно командную строку (Как открыть командную строку, Запуск командной строки от имени администратора), и ввести команду уже в ней, автоматическое закрытие окна происходить не будет, и вы увидите, что именно выдает команда в результате выполнения.

В случае выполнения bat-файла, если команды в нём не требуют ввода пользователя и не содержат команд паузы до нажатия клавиши пользователем, то при запуске (простым двойным кликом из расположения файла) и успешном выполнении, окно командной строки будет автоматически закрыто.

Если вы хотите иметь возможность прочитать ход выполнения и результат работы bat-файла, вы можете:

Запуск BAT файла из командной строки

  1. Открыть командную строку (как во втором пункте выше), указать путь к bat-файлу и нажать Enter. Он будет запущен и выполнен, но командная строка не будет закрыта после выполнения.
  2. В конце файла добавить команду PAUSE (сделать это можно в любом текстовом редакторе, подробнее: Как создать bat файл в Windows). В этом случае после выполнения любым способом окно не закроется пока вы не нажмете любую клавишу.

Командная строка сама открывается и сразу закрывается

Иногда вопрос о закрытии командной строки относится к другой ситуации: без каких-либо действий пользователя, обычно при входе в систему, но иногда и в произвольные моменты времени, само открывается окно командной строки и тут же закрывается, раньше, чем вы успеваете что-либо увидеть. В этом случае возможны следующие варианты:

Командная строка, будучи запущенной, закроется только тогда, когда пользователь нажмет кнопку завершения работы или выполнит в ней команду exit. Но бывает и такое, что после командная строка закрывается сама, не сообщая пользователю о результатах отработанного сценария и не сообщая о причинах закрытия. Как правило, с таким поведением консоли приходится сталкиваться при выполнении скриптов — CMD или BAT -файлов.

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

Ну что же, понудить ее изменить свое поведения очень просто. Самый простой способ — это добавить в конец командного файла команду pause или специальный ключ, запускающую копию командной строки.

Команда pause

Главное, чтобы у вас имелись права на редактирование этого самого скрипта.

Отройте скрипт Блокнотом или любым другим текстовым редактором и добавьте в самый конец кода команду pause или cmd /k.

Команда cmd /k

Это два разных способа и работают они по-разному.

CMD

Команда cmd /k работает несколько иначе.

Будучи добавлена в конец сценария, она как-бы перезапускает консоль, выводя стандартное приглашение ввести новую команду.

Cmd /k

Если же добавить cmd /k в середину кода, его выполнение будет прервано и прекращено.

В этом основная разница между этими командами.

Тонкая настройка командной строки

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

Для этого открываем командой regedit редактор реестра и разворачиваем ветку:

HKCR\batfile\shell\open\command

В правой колонке меняем значение параметра по умолчанию с "%1" %* на cmd.exe /k "%1" %*.

RegEdit

Тоже самое проделываем с параметром по умолчанию в ветке HKCR\cmdfile\shell\open\command , для командных файлов формата CMD .

RegEdit

Вот и всё, отныне командная строка будет закрываться только по решению юзера, если только в сценарий не прописана команда exit .

Какую команду можно поставить в конце командного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файла?

ОТВЕТЫ

Ответ 1

В пакетных файлах Windows/DOS:

Ответ 2

Зависит от точного вопроса!

Обычно pause выполняет задание в файле .bat.

Если вы хотите, чтобы cmd.exe не закрывался, чтобы продолжать печатать, используйте команду cmd /k в конце файла.

Ответ 3

Если вы хотите, чтобы cmd.exe не закрывался и мог продолжать печатать, используйте cmd /k

Просто почувствовал необходимость уточнить, что делает /k (с сайта Windows):

/k : Выполняет команду, указанную в строке, и продолжает.

Итак, cmd /k без последующей команды в конце файла bat просто сохранит окно cmd.exe для дальнейшего использования.

С другой стороны, pause в конце командного файла просто приостанавливает процесс и завершает cmd.exe при первой кнопке, нажав

Ответ 4

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

Ответ 5

Если вы используете Maven и хотите пропустить ввод и не допустить закрытия консоли, чтобы увидеть результат, вам нужно использовать команду CALL в скрипте, кроме просто "mvn clean install".

Как это закроет консоль

Так консоль будет оставаться открытой

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

Ответ 6

Добавьте cmd.exe в новую строку под кодом, который вы хотите выполнить:

Ответ 7

мой способ - написать фактическую партию (говоря "foo.bat" ), чтобы закончить работу; затем создайте еще один "start.bat":

Я считаю, что это очень полезно, когда я устанавливаю одноразовые переменные среды.

Ответ 8

Вызвать cmd в конце командного файла.

Ответ 9

. Он будет ожидать ввода пользователем и высвободит поток при нажатии клавиши.

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

Ответ 10

Возможность 1: Просто создайте 2 файла .bat и напишите в первую:

Пакетный файл 2 - это файл, который не закрывается в конце. Итак, теперь, когда вы открываете партию № 1, она начнет 2-й и сам гной. Когда второй заканчивается, он не будет полностью закрываться (до тех пор, пока вы не положите выход в конце)

Возможность 2: Пакетный файл 1:

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

Ответ 11

Я знаю, что опаздываю, но мой любимый способ:

Таким образом, пользователь не может выйти, используя ввод.

Ответ 12

Этот маленький хак просит пользователя ввести ключ и сохраняет его в переменной% exitkey% (эта переменная может быть вызвана тем, что вам нравится, хотя).

NB: пространство после '=' очень важно

Ответ 13

Ответ 14

У меня были проблемы с ответами здесь, поэтому я придумал это, что работает для меня (TM):

Ответ 15

Есть два способа сделать это зависит от варианта использования

1) Если вы хотите, чтобы приглашение Windows cmd оставалось открытым, чтобы вы могли увидеть результат выполнения и закрыть его впоследствии; использовать

2), если вы хотите, чтобы приглашение Windows cmd оставалось открытым и позволяло выполнять некоторые последующие команды; использовать

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

Ответ 16

Легко, добавьте cmd в свою последнюю строку летучей мыши, НО! если вы reset или очистите свой системный путь, вы должны запустить свой cmd с полным путем, например:

Например, у меня есть файл bat для reset jdk для старой версии, например:

Ответ 17

и окно закроется после нажатия клавиши. Чтобы скрыть текст, напечатанный в командной строке, введите

Читайте также: