批处理文件选择命令的参数超过10个



我有一个批处理脚本,它会找到哪个驱动器承载我的文件夹(磁盘部件情况(和创建文件夹,然后它会列出该文件夹中的文本文件(目前为文本(。无论如何,问题是当批次要求我选择要打开的一个时,它一直工作到9点。我甚至不能按10,因为当我按1时,它会自动打开文本文件。我如何写两位数?因为文件夹总是会更改,可能有30个选项。这是我的密码;

@for %%a in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do @if exist %%a:TAM_IMAGES set The_Drive=%%a
@for %%b in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do @if exist %%b:UserscanocaDesktopbosluktesti set testbasarisiz=%%b
REM @dir %The_Drive%:TAM_IMAGES
REM @dir %testbasarisiz%:UserscanocaDesktopbosluktesti
cd %The_Drive%:TAM_IMAGES
setlocal enabledelayedexpansion
set count=0
set "choice_options="
for /F "delims=" %%A in ('dir /a:-d  /b "%The_Drive%:TAM_IMAGES"') do (
set /a count+=1
set "options[!count!]=%%A"
set choice_options=!choice_options!!count!
)
for /L %%A in (1,1,!count!) do (
echo %%A]- !options[%%A]!

)
choice /c:!choice_options!  /m "Yuklemek istediginiz imaji seciniz: "
REM %testbasarisiz%:UserscanocaDesktoptest.bat %The_Drive%:TAM_IMAGES!options[%ERRORLEVEL%]!

start %The_Drive%:TAM_IMAGES!options[%ERRORLEVEL%]!
cmd /k

您可以通过使用两个(或多个(choice命令来模拟两位数(甚至更多(的条目。缺点:您总是必须同时输入两个(所有(数字(如第一个选项为01(。当然,这意味着您必须手动验证结果输入:

@echo off
setlocal enabledelayedexpansion
:input
set count=100
for /f "delims=" %%a in ('dir /b /a-d') do (
set /a count+=1
echo !count:~-2!] %%a
)
set /a countMax=count-100
set "countNr=%count:~-2%"
<nul set /p "=input (01...%countNr%, 00 for exit): " 
choice /c 1234567890 /n >nul
set first=%errorlevel:~-1%
<nul set /p "=%first%"
choice /c 1234567890 /n >nul
echo %errorlevel:~-1%
set ch=%first%%errorlevel:~-1%
echo that was %ch%
set /a line=1%ch%-101
REM echo debug: ch=%ch%;CountNr=%countNr%;CountMax=%CountMax%,Line=%line%
if "%ch%" == "00" goto escape
if %ch% gtr %countMax% echo bad input&goto :input
for /f "delims=" %%a in ('dir /b /a-d^|more +%line%') do set "file=%%a"&goto :cont
:cont
echo that was %ch% - %file%
echo doing something with %file%.
goto :eof
:escape
echo you choosed '00' for exit.

假设在输入过程中文件夹的内容不会改变,我通过两次dir避免了类似数组的变量。

相关内容

最新更新