希望是一些简单的事情.....
在批处理文件中,我希望 CMD 提示用户输入他们要输入的项目名称的数量:
例子:
输入项目数量:
接下来如果用户输入 2,系统将提示他们输入研究项目编号:
例子:
- 输入第一个项目编号:PROJ001
- 输入第二个项目编号:PROJ002
最后,无论他们输入了多少项目的所有项目编号,都应该有一个新的变量以以下形式包含它们:
例子:
'PROJ001','PROJ002'
因此,如果他们只输入 1,那么我需要的最终变量将是“PROJ001”,但如果他们输入 2 或 3 或 4 等,那么它将是“PROJ001”、“PROJ002 等”。
如何输入我将留给你,对我来说最简单的方法是:
例子:
输入项目编号,以空格分隔:
代码会将这些全部串在一起。
我确实看到一些回复想要关闭这个帖子……是的,我称 Windows 命令行为 DOS
我自己也尝试过这个但我的知识有限。
例如
我有
set /p proj1=Enter Project:
set /p proj2=Enter Project:
set /p proj3=Enter Project:
set newvar='%proj1%','%proj2%','%proj3%'
但是,如果用户想要添加超过 3 个,这将需要不断更新,并且收集数据会更好。
希望这可以进一步澄清这个问题。
答案1
通过延迟扩展输入可以存储为列表和数组,从而允许使用索引号简单访问列表中的各个元素。当没有提供输入时,以下内容将停止接受输入。
@Echo Off & Setlocal EnableDelayedExpansion
:input
Set /A i+=1 & Set /P "Project[!i!]=Enter project ID: "& For %%i in (!i!) Do IF "!Project[%%i]!" == "" (Goto :Next) Else Goto :input
:Next
For /L %%i in (1,1,%i%) Do If not "!project[%%i]!" == "" Set "ProjectList=!ProjectList!,!project[%%i]!"
Set Project
Exit /B