2010-06-22 34 views
9

Próbuję utworzyć pętlę w pliku .cmd.Jeśli nie istnieje, zakończ + cmd

Jeśli test.txt nie istnieje, to zabiję proces cmd.

@echo off 
if not exists test.txt goto exit 

Ale ten kod nie działa i nie wiem, jak wykonać pętlę co 2 sekundy.

Dzięki za pomoc.

Odpowiedz

14

Komenda nazywa exist nie istnieje:

if not exist test.txt goto :exit 
echo file exists 
:exit 

O swojej pętli:
nie jestem w 100% pewien, ale myślę, że nie ma sen lub czekać polecenie Windows. Możesz google dla snu, aby znaleźć darmowe oprogramowanie. Inną możliwością jest użycie ping:

ping localhost -n 3 >NUL 

EDIT:
Windows Server 2003 Resource Kit Tools zawiera sen.
Zobacz here uzyskać więcej informacji, zbyt

+0

dziękuję bardzo mutch ... wielką pomoc :-) – Sebastian

1

Jeśli trzeba czekać kilka sekund używać standardowych polecenie wyborem. Ten przykładowy kod sprawdza, czy plik istnieje co dwie sekundy. Pętla kończy się, jeśli plik istnieje:

@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

Jest też 'komenda timeout'. Ale zarówno 'choice' jak i' timeout' nie są dostępne we wszystkich wersjach systemu Windows. 'Ping' jest. – Stephan

0

Korzystanie następujące:

if not exist "file name" goto exit 

Wyniki w:

The system cannot find the batch label specified - exit 

Jednak stosując tę ​​samą komendę bez "goto" działa w następujący sposób:

if not exist "file name" exit 
1

wyjście to ke y słowo w DOS/Command Prompt - dlatego goto exit nie działa.

Używanie, jeśli nie istnieje, "exit" pliku zrzuca z tego pliku wsadowego. To dobrze, jeśli wyjście z pliku wsadowego jest tym, czego potrzebujesz.

Jeśli chcesz wykonać inne instrukcje przed wyjściem, zmień etykietę na coś podobnego: notfound następnie możesz przestać zauważać i wykonać inne instrukcje przed wyjściem.

(to tylko wyjaśnienie jednego z przykładów)