2

Как автоматически перезапустить пакет?

Если имя файла пакета изменилось,

start <fixedbatchfilename>

должен потерпеть неудачу, потому что, хотя имя файла изменяется, команда не делает.

Есть ли возможный способ, как

start <autogetbatchfilenameitself> ?

2 ответа2

2

Вы можете вызвать %0 в том же каталоге, чтобы снова вызвать сам пакет.

Вот небольшой пакетный файл, чтобы увидеть переменные для себя:

@echo off
echo Filename exactly as called: %0
echo Driveletter:                %~d0
echo Path:                       %~p0
echo Filename:                   %~n0
echo Extension:                  %~x0
echo Complete:                   %~d0%~p0%~n0%~x0

Пример:

echo The following will cause this to loop until Ctrl+C is pressed:
%0

Или же:

echo The following will cause this to loop until Ctrl+C is pressed:
%~d0%~p0%~n0%~x0
0

start "" "%~f0" ИЛИ start "title of batch window" "%~f0"

Для перезапуска командного файла используйте:

start "" "%~f0" exit

Это запустит ваш пакетный файл из вашего пакетного файла, независимо от имени файла или местоположения, если имя или местоположение не изменились во время пакетной операции, т.е. IE после запуска пакета и перед кодом: (start "" "%~f0") имел шанс казнить.

Всегда включайте TITLE, это может быть простая строка типа "Мой сценарий" или просто пара пустых кавычек «»
Согласно документации Microsoft, заголовок является необязательным, но в зависимости от других выбранных параметров могут возникнуть проблемы, если он не указан.

источник: https://ss64.com/nt/start.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .