Batch file 如何将DIR查询的结果用作VAR';s
我正在处理一个批处理文件,并使其非常易于使用,但我希望它“傻瓜式”或尽可能接近我可以得到。 我目前正在做的是显示文件夹列表,并要求用户从他们正在使用的列表中键入文件夹的名称。我想要的是,如果他们能在第一个结果中键入1,在第二个结果中键入2,依此类推 有问题的当前线路Batch file 如何将DIR查询的结果用作VAR';s,batch-file,Batch File,我正在处理一个批处理文件,并使其非常易于使用,但我希望它“傻瓜式”或尽可能接近我可以得到。 我目前正在做的是显示文件夹列表,并要求用户从他们正在使用的列表中键入文件夹的名称。我想要的是,如果他们能在第一个结果中键入1,在第二个结果中键入2,依此类推 有问题的当前线路 DIR /b "c:\ProgramData\Nuance\%var1%\Users\" | findstr /v "(DGN_RENAMED)" SET/p var2="Please type out the Provider
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."%
将显示如下所示的文件夹名称
卡梅隆
杰夫格
Lemper博士
斯奈德
然后用户必须输入JeffG,这会留下错误的空间,它不会破坏任何东西,但会浪费几秒钟
我想要的是显示“c:\ProgramData\Nuance\%var1%\Users\”中列出的文件夹,并将其设置为变量,如下所示,并且将ot设置为只需键入与文件夹名称相关联的编号的位置
1.卡梅伦
2.G
3.Lemper博士
4.斯奈德
@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%!"
现在,输出如下图所示,用户只需输入适当的数字。文件夹名称位于相应的变量(1
、2
、3
等)中。要访问它们,请使用感叹号
而不是%
(例如,!1!
),因为否则cmd.exe会尝试将它们解释为参数变量
1.0
2.lemper博士
3.g
4.snyder
请从上面的列表中键入提供商语音文件名:2
答案是2,即文件夹“dr.lemper”
尝试使用以下代码:
@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