Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何将DIR查询的结果用作VAR';s_Batch File - Fatal编程技术网

Batch file 如何将DIR查询的结果用作VAR';s

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

我正在处理一个批处理文件,并使其非常易于使用,但我希望它“傻瓜式”或尽可能接近我可以得到。 我目前正在做的是显示文件夹列表,并要求用户从他们正在使用的列表中键入文件夹的名称。我想要的是,如果他们能在第一个结果中键入1,在第二个结果中键入2,依此类推

有问题的当前线路

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