Jeg har en Windows .bat-fil, som jeg gerne vil acceptere brugerinput og derefter bruge resultaterne af dette input som en del af opkaldet til yderligere kommandoer.
Jeg vil f.eks. gerne acceptere et proces-ID fra brugeren og derefter køre jstack mod dette ID og lægge resultaterne af jstack-opkaldet ind i en fil. Men når jeg prøver dette, virker det ikke.
Her's mit eksempel bat-fil indhold:
@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt
og her'er hvad der vises i jstack.txt:
Indtast ID: Afslut batchjob (J/N)?
Prøv det her:
@echo off
set /p id="Enter ID: "
Du kan derefter bruge %id%
som en parameter til en anden batchfil som jstack %id%
.
For eksempel:
set /P id=Enter id:
jstack %id% > jstack.txt
Syntaksen er som følger: sæt /p variable=[string]`
Tjek http://commandwindows.com/batch.htm eller http://www.robvanderwoude.com/userinput.php for en mere dybdegående gennemgang af brugerinput med de forskellige versioner af Windows OS batchfiler.
Når du har indstillet din variabel, kan du derefter bruge den på følgende måde.
@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%
Bemærk syntaksen %VariableName%
.
Jeg er ikke sikker på, om det er tilfældet for alle versioner af Windows, men på den XP-maskine, jeg har, skal jeg bruge følgende:
set /p Var1="Prompt String"
Uden promptstrengen i citater får jeg forskellige resultater afhængigt af teksten.