Wie man richtig verwenden Sie eine IF-und GOTO-Anweisung
Habe ich null Erfahrung mit dem schreiben von batch-Dateien, aber mein Ziel scheint nicht schwer. Ich bin versucht, zu schreiben ein kleines Skript, das auffordern eines Benutzers zum eingeben einer ID-Nummer und dann die Suche in einem Verzeichnis .jpg-Dateien und kopieren Sie alle Bilder mit der ID-Nummer in einem separaten Verzeichnis. Die .jpgs sind Namen xxxxxx_zzz.jpg wobei xxxxxx ist die ID-Nummer mit bis zu 6 Ziffern und zzz ist die Sequenz-Nummer. Zum Beispiel, eine ID haben kann, viele Bilder: 123456_001.jpg, 123456_002.jpg, 123456_003.jpg usw.
Ich habe schon mit mehreren IF
und GOTO
Befehle, aber ich scheine zu sein, abweichend von meinem Ziel. Ich kenne zwei IF
Aussagen, die ich derzeit verwende sind unten Müll, aber ich verließ Sie in der syntax zu vermitteln, die Richtung, die ich denke, dass ich mich bewege.
Komme ich nicht an die IF
Aussagen zu verwenden, die GOTO
Befehle. Ich glaube nicht, dass ich völlig verstehen, wie labels funktionieren soll.
@ECHO OFF
CLS
:START
DEL /q C:\Users\ADMIN\Desktop\temp\*.*
:GETINPUT
set /p propkey=Enter the Property Key of pictures to retrieve.:
IF EXIST C:\Users\ADMIN\Desktop\photos\*%propkey%_???.jpg GOTO Success
IF "%propkey%"=="" ECHO No Property Key was entered. GOTO START
:Success
ECHO Pictures from Property Key %propkey% will now be moved to the Temp folder on the Desktop. && PAUSE
COPY "C:\Users\ADMIN\Desktop\photos\*%propkey%*.jpg" "C:\Users\ADMIN\Desktop\temp\"
START C:\Users\ADMIN\Desktop\temp\
:END
- WENN VORHANDEN, tut ja Unterstützung von wildcards für Dateinamen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Ein label ist ein Weg, um willkürlich festlegen, eine Zeile in eine batch-Datei. Es wird von der
GOTO
Befehl zum ändern der gewohnten top-to-bottom Fortschreiten der Befehlsausführung, die angibt, welche Zeile bearbeitet werden soll, weiter. Wie Sie wahrscheinlich herausgefunden, mitIF
Befehle in Einklang mitGOTO
ermöglicht die bedingte Verarbeitung, wie wenn die Werte eingehalten werden oder Fehler auftreten.Anderen verwenden Sie eine Bezeichnung, könnte für die Dokumentation oder Klarheit. In meinem Beispiel oben, "CheckFolders" ist nicht von einem
GOTO
, aber es ermöglicht dem Programmierer, die erahnen, was dieser Abschnitt der code funktioniert.Obwohl wild-cards arbeitet in
if exist
gibt es bestimmte Kombinationen, die fehlschlagen. Auch, Sie müssen schließen Sie den Namen in Anführungszeichen, wenn der Pfad Leerzeichen enthalten kann. Versuchen:Ihren code sehr nah war. Es brauchte eine
goto :eof
zu stoppen, es fallen durch die main-routine. Ändern&&
zu&
und ein&
nach der echo-Anweisung fehlt. Ich habe diegoto start
zur nächsten Markierung, um zu vermeiden, eine Harmlose Fehlermeldung.