Använda batch-filer, del 3: IF Command

January 26

Detta tips fortsätter serien om hur du använder kommandofiler. Det föreslås att du (åter) besöka de tidigare tips så att vi kan fortsätta där vi slutade. Hittills har vi täckt följande kommandon: DIR, REM, ECHO, Sök, TIME och TIMEOUT. Vi har också använt följande aktörer: utgång till fil (>), anmärkning (: :), inget eko (@), rör (|), och CONCATENATE (&). Slutligen vet vi att vi använder parametrar som skickas till en batch-fil via kombinationerna% 1,% 2,% 3, etc.

Detta tips kommer att fokusera på kommandon som är relaterade till att utföra villkor bearbetning i en batch-fil. Dessa inkluderar IF, VAL, GOTO, och den speciella syntaxen för ": label".

Jag har en väldigt praktisk batch fil som heter Do.bat. Det är lite mer än en "wrapper" som kör program oavsett var dessa program finns. Så, till exempel, om jag vill köra program som heter Prog1.exe Jag skulle helt enkelt skriva

C: \ Bat> DO PROG1

Om jag ville köra Prog2.exe skulle jag skriva

C: \ Bat> DO Prog2

Det fina med Do.bat är att när jag skapade det, jag kom in placeringen av alla program som jag vill att det ska fungera med. Så jag inte behöver komma ihåg, till exempel att Prog1.exe bor på "C: \ Program \ My Program \ Prog1.exe" och att Prog2.exe bor på "D: \ Utilities \ Barry \ Prog2.exe" . Plus, jag aldrig skriva dessa långa sökvägar igen.

Min Do.bat filen ser ut så här:

ECHO OFF
GOTO% 1
: PROG1
"C: \ Program \ My Program \ Prog1.exe"
GOTO Klar

: Prog2
"D: \ Utilities \ Barry \ Prog2.exe"
GOTO Klar
: Klar

Den första raden i filen säkerställer att de andra linjerna kommer inte att visas. Detta följs av GOTO linjen, som tar som parameter namnet på den etikett som styr ska överföras till. Och det råkar vara så att denna etikett är också den parameter som skickades till Do.bat till att börja med. Så när du åkallar Do.bat och passera "PROG1" som parameter, bat-filen gör en GOTO till en etikett som heter ": PROG1" (dessa är inte skiftlägeskänsliga). Execution följer sekventiellt från topp till botten, så nästa kommando som ska köras är den som åberopar Prog1.exe. Efter programmet är avslutat, fortsätter .bat filen genom att köra "GOTO Done" kommandot. Den ": Done" etikett är den sista raden i filen, så när den når denna punkt, bat-filen utgångar. (Det finns en EXIT-kommando, men om vi skulle köra det, det skulle upphöra inte bara .bat filen utan hela CMD sessionen, vilket förmodligen inte är vad du vill göra.)

Du kan alternativt använda kommandot VAL och kanske skapa en enkel meny att välja mellan vilket program som ska köras. I det här fallet kan jag göra en fil som heter Choice.bat som skulle se ut så här:

ECHO OFF
ECHO Välj en för att köra PROG1
ECHO Välj 2 för att köra Prog2
ECHO Välj Q för att avsluta
VAL / C 12Q / T 10 / DQ
GOTO% errorlevel%
: 3
ECHO Avsluta
GOTO Klar
: 2
"D: \ Utilities \ Barry \ Prog2.exe"
GOTO Klar
: 1
"C: \ Program \ My Program \ Prog1.exe"
GOTO Klar
: Klar

Den CHOICE Kommandot ger användaren en uppmaning att ange ett 1, 2, eller Q (som standard, det är inte skiftlägeskänsligt). All annan karaktär ignoreras. Växeln / T säger till timeout på 10 sekunder, då proceduren kommer att bete sig som om alternativet Q valdes (/ D Q säger Default alternativet är Q). Efter kommandot VAL utför, är variabeln% errorlevel% inställd på ordnings värdet av optionen valt. Så om användaren valt 1,% errorlevel% är satt till 1; om användaren valt 2,% errorlevel% är satt till 2; och om användaren valt Q, är% errorlevel% inställd på 3. Vi sedan GOTO etiketten anges med% errorlevel% och utföra den begärda åtgärden.

Detta tips (13185) gäller för Windows 7 och 8.