我想在当前运行的拇指驱动器中检查.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
答案 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
。我用过的价值适合我的。