Hvordan kan jeg i Windows cmd bede om brugerinput og bruge resultatet i en anden kommando?

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
Kommentarer (5)

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%.

Kommentarer (7)

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.

Kommentarer (3)