2017-03-21 2 views
1

Ich habe ein paar Batch-Dateien zu üben und es gibt etwas, das ich schwer verstehen kann. Bitte beachten Sie, dass ich neu bin und dass mein Code wahrscheinlich nicht korrekt oder der effizienteste sein wird.Batch Windows Parameter

Meine Frage ist, wie eine Nachricht zu liefern, falls der Benutzer mit den Parametern zur Verfügung gestellt hat nicht die Batch-Datei auszuführen (oder im Fall verwendet er mehr Parameter als erforderlich)

set argu=true 

If %1 == PhoneFamily (findstr /is "%2" PhoneFamily.txt) 
If %1 == PhoneFriends (findstr /is "%2" PhoneFriends.txt) 
If %1 == PhoneWork (findstr /is "%2" PhoneWork.txt) 

If not "%%1"=="PhoneFamily" If not "%%1"=="PhoneWork" If not "%%1"=="PhoneFriends" set argu=false 
If "%argu%"=="false" echo "Wrong Parameters, Please Try Again. The Files are PhoneFamily, PhoneWork, PhoneFriends. Only 2 Paramaters at a time." 

Dies ist die einzige So konnte ich einen "Fehler" melden, wenn zu wenig oder zu viele Parameter angegeben wurden. Aber ich möchte eine bessere Art und Weise lernen, dass diese Möglichkeiten (ein Fehler für keine Parameter trennt, und eine für 3 oder mehr Parameter angegeben.

+0

Verwenden 'if„% ~ 1“, was bedeutet = = "PhoneFamily" (...) '; plain'% 1' schlägt fehl, wenn leer (kein Argument ist d elivered); '%% 1' ist einfach falsch (expandiert buchstäblich zu'% 1') ... – aschipfl

Antwort

0
set argu=%1 
if not defined argu echo No argument provided&pause&goto :eof 
set argu=true 

Als alter Assembler-Programmierer, ich benutze Variablen für die vorübergehende Speicherung.

die & verkettet Anweisungen -. offensichtlich sind die pause sind optional die goto :eof wo die : in diesem Fall obligatorisch ist, sind eine eingebaute Funktion „geht zum Ende der Datei“