基于输入参数的数量

时间:2018-04-26 12:57:48

标签: batch-file for-loop cmd

我想接受来自用户的可变数量的输入(文件名),并根据用户提供的输入数量循环语句。我写了以下内容来实现同样的目标:

@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”作为输入,我该怎么办?

如果有人可以提出替代方案或指出我在这里做错了什么,那就太好了。

2 个答案:

答案 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”