Mám súbor .bat systému Windows, ktorý by som chcel prijať vstup od používateľa a potom použiť výsledky tohto vstupu ako súčasť volania ďalších príkazov.
Chcel by som napríklad prijať ID procesu od používateľa a potom spustiť jstack proti tomuto ID, pričom výsledky volania jstacku sa vložia do súboru. Keď to však skúsim, nefunguje to.
Tu je môj vzorový obsah súboru bat:
@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt
a tu'je to, čo sa zobrazí v jstack.txt:
Zadajte ID: Ukončiť dávkovú úlohu (Y/N)?
Vyskúšajte toto:
@echo off
set /p id="Enter ID: "
Potom môžete použiť %id%
ako parameter iného dávkového súboru, napríklad jstack %id%
.
Príklad:
set /P id=Enter id:
jstack %id% > jstack.txt
Syntax je takáto: set /p variable=[string]
Pozrite si stránky http://commandwindows.com/batch.htm alebo http://www.robvanderwoude.com/userinput.php, kde nájdete podrobnejšie informácie o používateľskom vstupe s rôznymi verziami dávkových súborov operačného systému Windows.
Po nastavení premennej ju môžete používať nasledujúcim spôsobom.
@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%
všimnite si syntax %VariableName%
Nie som si istý, či to platí pre všetky verzie systému Windows, ale na počítači s XP, ktorý mám, musím použiť nasledujúce:
set /p Var1="Prompt String"
Bez reťazca výzvy v citáciách dostávam rôzne výsledky v závislosti od textu.