如何使用批处理脚本列出具有特定文件扩展名的文件?

时间:2014-07-17 05:10:00

标签: batch-file scripting

我想在当前运行的拇指驱动器中检查.raw文件并列出它。如果有多个,则会提示用户选择要使用的.raw文件。

例如:在我目前的拇指驱动路径(即E :)中,我有一些.raw文件。

Hello1.raw Hello2.raw Hello3.raw

因此,如果只有1个.raw文件,它会自动将.raw文件路径(即E:\Hello.raw)插入命令(vol231.exe -f E:\hello.raw imageinfo > hellllo.txt

但是如果有超过1个.raw文件,它将提示用户选择要插入命令的.raw文件。

例如:“您有超过1个.raw文件。请选择1.” 然后它将列出.raw文件。

1. Hello1.raw

2. Hello2.raw

3. Hello3.raw

然后用户将选择1,2或3.然后,如果用户选择选项3.它会将命令插入vol231.exe -f E:\Hello3.raw imageinfo > end.txt

任何人都可以帮我吗?

编辑:

我有这种编码,它在某种程度上有所帮助,但我不知道如何充分利用它来满足我的需求。

FOR /F "tokens=* delims=|" %%i IN ('dir /b *.raw*') do echo %%i

1 个答案:

答案 0 :(得分:1)

@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION 
:: remove variables starting $
FOR  /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a="
SET "sourcedir=U:\sourcedir"
SET "choicebet= 0123456789abcdefghijklmnopqrstuvwxyz"
FOR /f "tokens=1*delims=[]" %%a IN (
  'dir /b /a-d "%sourcedir%\myfile*.raw" ^|find /n /v ""'
  ) DO (
 SET $!choicebet:~%%a,1!=%%b
 SET /a choices=%%a+1
)
)
CALL SET choices=%%choicebet:~0,!choices!%%
IF DEFINED $1 (
 cls
 FOR /f "tokens=1*delims==" %%a IN ('set $') DO SET "choicemade=%%a : %%b"&ECHO(!choicemade:~1!
 choice /c %choices:~1% /M "You have MORE than 1 raw files. Please select one."
 REM SET /a choicemade=!errorlevel!-1
 CALL SET choicemade=$%%choicebet:~!errorlevel!,1%%
) ELSE (
 SET choicemade=$0
)
FOR /f "tokens=1*delims==" %%a IN ('set %choicemade%') DO SET choicemade=%%b
ECHO(vol321.exe -f %sourcedir%\%choicemade% imageinfo

GOTO :EOF

我只是echo编辑了将要执行的命令,而没有输出到end.txt以便于验证。

您需要为您的系统正确设置sourcedir。我用过的价值适合我的。