(6)
Artikel
bewerten
(89% positiv)
(48)

Sprungmarken:

Beispiel:

@echo off
goto springe
echo hallo
:springe
echo gesprungen
pause


Ausgabe: gesprungen (echo hallo wird ignoriert, da mit dem Befehl "goto springe" die Zeile "echo hallo" übersprungen wird)

TEST: existiert eine Datei?

if exist %datei.txt
Beispiel:

@echo off
if exist %datei.txt goto existiert
echo Datei nicht gefunden!
goto ENDE
:existiert
echo die Datei existiert!
:ENDE 
pause 


Ausgabe: wenn die Datei datei.txt existiert: die Datei existiert! wenn die Datei datei.txt nicht existiert: Datei nicht gefunden!

Errorlevel:

jeder Befehl gibt bestimmte errorlevel zurück:
meist bedeutet der errorlevel 1, dass der Befehl nicht erfolgreich war:
Beispiel:

@echo off
xcopy c:\so c:\so2
if errorlevel 1 goto error
goto ende
:error
echo das kopieren war nicht erfolgreich!
:ende
pause


in diesem Beispiel wird das Verzeichnis c:\so in c:\so2 kopiert,
wenn jetzt z.B. so nicht existiert, schreibt die Batch-Datei: "das kopieren war nicht erfolgreich!"

for Schleife

For %%f In (c:\batch\*.bat c:\bat\*.bat) Do Copy %%f 

Erklärung: diese Zeile kopiert alle Dateien im Ordner c:\batch mit Dateiendung .bat nach c:\bat

 

der Zähler kann auch so aussehen:

for /l %i in (1,1,100) do echo %i

bedeutet: beginnend von 1 in 1er Schritte bis 100; ausgeführt wird echo %i (%i ist die fortlaufende Nummer)

 

siehe auch: cmd Befehl mehrfach

if

if "alle"=="%1" del *.tmp 

Erklärung: %1 ist eine, beim Aufruf auf an die Batch-Datei, angehängte Variable:
z.B. batchdatei.cmd Variable. Wenn also in diesem Beispiel an die Batchdatei "alle" angehängt wird: batchdatei.cmd alle, dann werden alle Dateien mit Endung .tmp aus dem aktuellen Verzeichnis gelöscht.

möglich wäre auch eine Abfrage mit if not 1==2 ... (also wenn 1 nicht 2 ist, stimmt in diesem Fall)

warte auf Task

:LOOP
echo in der Schleife
@ping -n 10 localhost> nul
TaskList|Find "Taskname" >NUL || If Errorlevel 1 Goto WEITER
Goto LOOP
:WEITER



Erklärung:
mit @ping -n 10 localhost> nul wird in der Schleife 10 Sekunden gewartet,
die Befehlszeile TaskList|Find "Taskname" >NUL || If Errorlevel 1 Goto WEITER verlässt die Schleife erst, wenn der Task: "Taskname" nich mehr läuft   

letzte Änderung dieses Artikels: 04.10.2016 19:49




Kommentare