batch-file - 10多个参数的批处理文件选择命令
问题描述
我有一个批处理脚本,它找到了哪个驱动器携带我的文件夹(磁盘部分情况)和创建文件夹,然后它列出了该文件夹中的文本文件(现在是它的文本)。无论如何,问题是当批处理要求我选择要打开哪个时,它一直工作到 9 点。我什至不能按 10,因为当我按 1 时它会自动打开文本文件。2位数字怎么写?因为文件夹总是会改变,可能有 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:\Users\canoca\Desktop\bosluktesti set testbasarisiz=%%b
REM @dir %The_Drive%:\TAM_IMAGES
REM @dir %testbasarisiz%:\Users\canoca\Desktop\bosluktesti
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%:\Users\canoca\Desktop\test.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
两次避免了类似数组的变量,假设文件夹的内容在输入期间不会改变。
推荐阅读
- java - 在 java 中支持 Locales(tn-ph) 和 (hmn-cn)
- sqlite - 如何在pycharm中导入sqlite3?
- c++ - 代码在我的系统中运行良好,但 coursera autograder 给了我未知的信号
- python - 如何使用模型关系字段制作预填充字段?
- php - PHP / Laravel - 如何在每页打印上显示表格标题?
- php - 配置 Swagger UI 路由
- ios - 使用 WebKit 视图显示 URL - 当我单击新选项卡并再次返回时,我需要它来恢复\刷新
- amazon-s3 - 是否可以将 Amazon S3 Glacier 存储文件转移到 Glacier Deep Archive?
- angular - 以角度 2 从 DB 动态加载路由时出现问题
- c# - 为子列表中包含超过 2 个项目的列表创建嵌套列表