Почему использование «cmd» в .bat разрешается правильно?

Почему использование «cmd» в .bat разрешается правильно?

В поисках правильного метода запуска .bat-скрипта, при котором cmdокно останется активным после завершения, я узнал, что один из двух популярных методов — включить cmd /k file.batв скрипт строку, в которой «file.bat» ссылается на себя.

Хотя я понимаю функциональный результат вышеизложенного, я не могу понять, как — концептуально — это выполняется и разрешается правильно?

По моему собственному необразованному умозаключению, я думаю, что это как-то связано с аргументом /k, функция которого объясняется следующим образом:

Выполняет команду, указанную строкой, но остается

Тем не менее, даже если это позволяет скрипту предотвратить зацикливание, как это не нарушает его собственное выполнение?

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

РЕДАКТИРОВАТЬ:

Ну, это было глупо с моей стороны! Я увидел в ответездесьчто синтаксис был организован так, как я указал выше... которыйделаетзациклить сценарий, так что мне следовало бы сначала проверить самому, прежде чем слепо верить без надлежащего контекста (и я всегда говорю "доверяй, но проверяй", какой лицемер

решение1

Что касается того, почему это cmdрешает, есть пара хороших объяснений наПереполнение стека- по сути cmdинтерпретируется как %ComSpec%, что является переменной среды вашей системы для полного расположения cmd.exe (обычно C:\Windows\System32\cmd.exe).

Что касается контекста вашего вопроса - если у вас cmd /k yourbatfile.batвнутри yourbatfile.bat, он просто зациклится. Если вы хотите, чтобы ваше окно оставалось открытым по причинам устранения неполадок, я настоятельно рекомендую просто добавить a pauseв конце/после любого раздела(ов), с которым у вас возникли проблемы.

Формулировка /kдляздесь немного по-другомупоскольку он говорит, что «возвращает в командную строку» — по сути, добавление /kпохоже на открытие cmd.exe и его использование, а отсутствие /k— на выполнение команды из окна «Выполнить».

Вы можете проверить это, открыв «Выполнить» и выполнив команду ipconfig /all— ваше окно закроется сразу после ipconfigзавершения; но если вы откроете «Выполнить» и выполните команду cmd /k ipconfig /all— ваше окно вернет вас в командную строку.

Связанный контент