Frage von Kalameet, 40

Wie command "IF" benutzen?

Hallo liebe Community,

Ich habe ein sehr simples Problem. Ich möchte die Datei (wenn vorhanden) von C:\Test_1\Text.txt nach C:\Test_2\Text.txt und wenn sie schon im Ordner Test_2 ist nach Test_1 verschieben. Hier ist mein bisheriges Skript:

CLS

REM Locating...

@echo off

IF EXIST C:\Test_1\text.txt Move C:\Test_1\text.txt C:\Test_2\text.txt

IF EXIST C:\Test_2\text.txt Move C:\Test_2\text.txt C:\Test_1\text.txt

vom Ordner Test_2 nach Test_1 verschieben klappt wunderbar doch andersrum nicht weil die Datei gleich zurück verschoben wird.

Danke schonmal im voraus.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von daCypher, 19

Dafür musst du mit Sprungbefehlen arbeiten und das zweite IF überspringen, wenn das erste ausgeführt wird. So in der Art müsste es gehen (ungetestet):

CLS

REM Locating...

@echo off

IF EXIST C:\Test_1\text.txt 
    GOTO Move1

IF EXIST C:\Test_2\text.txt 
    Move C:\Test_2\text.txt C:\Test_1\text.txt
    GOTO Ende

:Move1
Move C:\Test_1\text.txt C:\Test_2\text.txt

:Ende

Man kann glaube ich auch mit ELSE arbeiten. Da müsstest du dich mal im Internet schlau machen. Das Grundproblem bei deinem Code dürfte ja bekannt sein: Er durchläuft erst das erste IF und verschiebt die Datei nach Test_2 und durchläuft direkt danach das zweite IF, wo er die Datei wieder zurück schiebt.

Kommentar von Kalameet ,

Danke für die Antwort hab jetzt ein e

@echo off
CLS

echo Locating...

IF EXIST C:\Test_1\text.txt ( Move C:\Test_1\text.txt C:\Test_2\text.txt

echo Text.txt nach Test_2 verschoben

) Else (

Move C:\Test_2\text.txt C:\Test_1\text.txt

echo Text.txt nach Test_1 verschoben )

Kommentar von MatthiasHerz ,

Dann bekommst eine Fehlermeldung, wenn die Datei text.txt im Ordner Test_2 nicht vorhanden ist.

Kommentar von Kalameet ,

Doch funktioniert alles :)

Kommentar von MatthiasHerz ,

Den Else-Zweig solltest auch mit IF EXIST absichern.

Schließlich kann es sein, dass die Datei gar nicht dort ist.

Antwort
von TUrabbIT, 15

Du kannst die ELSE Klausel verwenden. Diese muss in der gleichen Zeile mit der IF Anweisung sein.  Siehe dazu die Dokumentation:
https://technet.microsoft.com/en-us/library/bb490920.aspx

Beispiel:


IF EXIST filename. (del filename.) ELSE (echo filename. missing.)




Antwort
von NathanDerWeisEs, 15

Hallo Kalameet,

es werden im 2. Fall beide Anweisungen ausgeführt.

Also 1 nach 2 und wieder zurück.

Das Script muss nach der 1. Anweisung beendet werden.

Also mit exit oder goto :eof

Nathan

Kommentar von Kalameet ,

Danke ich habe jetzt eine Lösung gefunden

@echo off
CLS

echo Locating...

IF EXIST C:\Test_1\text.txt ( Move C:\Test_1\text.txt C:\Test_2\text.txt

echo Text.txt nach Test_2 verschoben

) Else (

Move C:\Test_2\text.txt C:\Test_1\text.txt

echo Text.txt nach Test_1 verschoben )

Kommentar von NathanDerWeisEs ,

Und wenn beides nicht zutrifft?!

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten