我想接受来自用户的可变数量的输入(文件名),并根据用户提供的输入数量循环语句。我写了以下内容来实现同样的目标:
@echo off
SetLocal EnableDelayedExpansion
set argC = 0
for %%x in (%*) do Set /A argC+=1
ECHO Start of Loop
ECHO %argC%
ECHO !argC!
FOR /L %%i IN (1,1,!argC!) DO (
<move command here over the user provided arguments %1, %2 etc, we don't know how many filenames>
)
现在,我想用命令替换ECHO %%i
,并以相同的顺序逐个传递用户输入的文件名。例如,如果我用移动命令替换ECHO %%i
,则用户提供“a.txt”和“b.txt”作为输入,我该怎么办?
如果有人可以提出替代方案或指出我在这里做错了什么,那就太好了。
答案 0 :(得分:1)
如果要根据用户输入移动文件。只需:
@echo off
for %%a in (%*) do (
echo move %%a
)
所以从cmdline你可以mybatchfile.cmd file1.txt file2.txt
等。
OR
@echo off
set /p "files=Enter Files to copy : "
for %%a in (%files%) do (
echo move %%a
)
这只会在运行文件时提示用户输入文件。
答案 1 :(得分:1)
for %%i in (%*) do echo "%%~i"
应该很好地回显你提供的参数。将echo
替换为适合的命令。
BTW - 批处理对SET
语句中的空格敏感。 SET FLAG = N
将名为“FLAG Space ”的变量设置为值“ Space N”