я пытаюсь сделать цикл в файле .cmd.
Если test.txt не существует, я убью процесс cmd.
@echo off
if not exists test.txt goto exit
Но этот код не работает, и я не знаю, как сделать цикл каждые 2 секунды.
Спасибо за помощь.
я пытаюсь сделать цикл в файле .cmd.
Если test.txt не существует, я убью процесс cmd.
@echo off
if not exists test.txt goto exit
Но этот код не работает, и я не знаю, как сделать цикл каждые 2 секунды.
Спасибо за помощь.
Команда называется exist
, а не существует:
if not exist test.txt goto :exit
echo file exists
:exit
О вашем цикле:
я не уверен на 100%, но думаю, что в Windows нет команд sleep или wait. Вы можете поискать в Google sleep какое-нибудь бесплатное ПО. Другая возможность — использовать ping:
ping localhost -n 3 >NUL
EDIT:
Инструменты набора ресурсов Windows Server 2003 содержат сон.
См. здесь для получения дополнительной информации, а также
Если вам нужно подождать несколько секунд, используйте стандартную команду CHOICE. Этот пример кода проверяет, существует ли файл каждые две секунды. Цикл завершается, если файл существует:
@ECHO OFF
:CHECKANDWAITLABEL
IF EXIST myfile.txt GOTO ENDLABEL
choice /C YN /N /T 2 /D Y /M "waiting two seconds..."
GOTO CHECKANDWAITLABEL
:ENDLABEL
timeout
. Но и choice
, и timeout
доступны не во всех версиях windows. Ping
есть.
- person Stephan; 29.03.2014
exit — это ключевое слово в DOS/командной строке, поэтому goto exit не работает.
Использование выхода «имя файла», если оно не существует, выводит вас из этого пакетного файла. Это нормально, если вы хотите выйти из пакетного файла.
Если вы хотите выполнить некоторые другие инструкции перед выходом, измените метку на что-то вроде :notfound, тогда вы можете перейти к notfound и выполнить некоторые другие инструкции перед выходом.
(это просто пояснение к одному из примеров)
Используя следующее:
if not exist "file name" goto exit
Результат:
The system cannot find the batch label specified - exit
Однако использование той же команды без «goto» работает следующим образом:
if not exist "file name" exit