2015-09-23 44 views
0

我正在處理一個批處理文件,並且使它非常易於使用,但我希望它能夠「傻瓜校對」或儘可能地接近我所能得到的結果。 我目前在做什麼它顯示文件夾的列表,並要求用戶從他們正在使用的列表中輸入文件夾的名稱。我想要的是,如果他們只能爲第一個結果輸入1,第二個輸入爲2,依此類推。我如何使用DIR查詢的結果作爲VAR的

當前線有問題

DIR /b "c:\ProgramData\Nuance\%var1%\Users\" | findstr /v "(DGN_RENAMED)" 
SET/p var2="Please type out the Provider voice file name from the list above."% 

這將顯示如下圖所示

卡梅倫

JeffG

DR文件夾名稱。 Lemper

斯奈德

然後用戶必須在JeffG,其中餘地錯誤輸入,它不會破壞任何東西,但會浪費幾秒鐘。

我想要顯示「c:\ ProgramData \ Nuance \%var1%\ Users \」中列出的文件夾,並將它們設置爲像下面這樣的變量,並且只有在其中只需鍵入相關的文件夾名稱

1.Cameron

2.JeffG

3.Dr.Lemper

4.Snyder

回答

0
@echo off 
setlocal enabledelayedexpansion 

set index=1 
for /f %%i in ('dir /b /ad "c:\ProgramData\Nuance\%var1%\Users\" ^| findstr /v "(DGN_RENAMED)"') do (
    set !index!=%%i 
    echo !index!.%%i 
    set /a index=!index!+1 
) 
set /p var2="Please type out the Provider voice file name from the list above: " 
echo The answer is %var2%, corresponding folder name is "!%var2%!" 
0123號

現在輸出看起來像下面顯示的那樣,用戶只需輸入適當的數字即可。文件夾名稱位於相應的變量中(1,2,3等)。要訪問它們,請使用感嘆號!而不是%(例如,!1!),否則cmd.exe會嘗試將它們解釋爲參數變量。

1.cameron 2.dr.lemper 3.jeffg 4.snyder Please type out the Provider voice file name from the list above: 2 The answer is 2 which is folder "dr.lemper"

0

嘗試使用下面的代碼:

@echo off 
setlocal EnableDelayedExpansion 
set /a count=0 

for /f "tokens=*" %%d in ('dir /b "C:\Users\*"') do (
    set /a count+=1 
    @echo !count!. %%d 
) 
pause 
相關問題