Все действия нужно прописать в файле с расширением .bat Например, если мы хотим, чтобы выполнялась проверка наличия каталога и если его нет, то создать его, то нужно прописать следующие строки:
Возьмем для примера каталог, расположенный на диске C: и называющийся TEST
Code
if not exist "C:\TEST" (
:loop
md "C:\TEST"
ping 127.0.0.1 -n 3 -w 1000 > nul
if not exist "C:\TEST" ( @echo Не удалось создать каталог "C:\TEST" && goto :loop )
)
Единственным неудобством будет замена названия каталога в нескольких местах кода.
Если вы хотите быстро сменить название каталога, то нужно задать переменную и присвоить ей название каталога.
Для примера возьмем тот же каталог.
Code
set KATALOG=C:\TEST
if not exist "%KATALOG%" (
:loop
md "%KATALOG%"
ping 127.0.0.1 -n 3 -w 1000 > nul
if not exist "%KATALOG%" ( @echo Не удалось создать каталог "%KATALOG%" && goto :loop )
)
В этом случае нужно будет просто сменить название каталога в переменной KATALOG. В случае, если нужно наоборот при наличии каталога удалить его, нужно прописать следующее:
Code
set KATALOG=C:\TEST
if exist "%KATALOG%" (
:loop
rd "%KATALOG%"
ping 127.0.0.1 -n 3 -w 1000 > nul
if exist "%KATALOG%" ( @echo Не удалось удалить каталог "%KATALOG%" && goto :loop )
)
Также можно сделать переименование или перемещение каталога, в случае если он существует:
Code
set KATALOG=C:\TEST
if exist "%KATALOG%" (
:loop
move "%KATALOG%" "%KATALOG%1"
ping 127.0.0.1 -n 3 -w 1000 > nul
if exist "%KATALOG%" ( @echo Не удалось переименовать каталог "%KATALOG%" && goto :loop )
)
В этом случае, если каталог TEST существует, то он будет переименован в TEST1. Если каталога TEST нет, то ничего не произойдет и цикл прекратится. В любом случае, я думаю, мысль зацикливания проверки понятна.
Пинг используется для задержки проверки в 3 секунды. Если задержку проверки не делать, то каталог может не успеть переименоваться или удалиться или создаться, в зависимости от первоначальных условий, и возможны ошибки выполнения условий.