Если не существует, выход + cmd - PullRequest
9 голосов
/ 22 июня 2010

Я пытаюсь сделать цикл в файле .cmd.

Если test.txt не существует, я убью процесс cmd.

@echo off
if not exists test.txt goto exit

Но этот код не работает, и я не знаю, как сделать цикл каждые 2 секунды.

Спасибо за помощь.

Ответы [ 4 ]

15 голосов
/ 22 июня 2010

Команда называется 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 содержат sleep .
См. здесь для получения дополнительной информации

1 голос
/ 04 июня 2015

выход - ключевое слово в DOS / командной строке - вот почему goto exit не работает.

Использование, если не существует, выходного имени файла, выводит вас из этого пакетного файла. Это нормально, если вы хотите выйти из командного файла.

Если вы хотите выполнить некоторые другие инструкции перед выходом, измените метку на что-то вроде: notfound, тогда вы можете перейти к notfound и перед выходом выполните другие инструкции.

(это просто пояснение к одному из примеров)

1 голос
/ 29 марта 2014

Если вам нужно подождать несколько секунд, используйте стандартную команду 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
0 голосов
/ 01 апреля 2015

Использование следующего:

if not exist "file name" goto exit

Результат:

The system cannot find the batch label specified - exit

Однако использование той же команды без "goto" работает следующим образом:

if not exist "file name" exit
...