Batch file 根据输入参数的数量在批处理脚本中循环

Batch file 根据输入参数的数量在批处理脚本中循环,batch-file,for-loop,cmd,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 her

我希望接受用户提供的可变数量的输入(文件名),并根据用户提供的输入数量在语句上循环。为了达到同样的目的,我写了以下内容:

@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关闭
SetLocal EnableDelayedExpansion
设置argC=0
对于%%x英寸(%*)的设置/A argC+=1
回音环路起始
回显%argC%
回响argC!
对于(1,1,!argC!)中的/L%%i,请执行以下操作(

如果要根据用户输入移动文件,只需执行以下操作:

@echo off
for %%a in (%*) do (
 echo move %%a
)
因此,您可以从cmdline执行
mybatchfile.cmd file1.txt file2.txt
等操作

这只会在运行文件时提示用户输入文件

for %%i in (%*) do echo "%%~i"
应该很好地回显您提供的参数。使用适合的命令替换
echo


顺便说一句-批处理对
SET
语句中的空格敏感。
SET FLAG=N
将名为“FLAGSpace”的变量的值设置为“SpaceN”

在第二个循环中,您需要
%%i
而不是
%i
。@npocmaka谢谢,我认为问题出在循环条件上。我已经修改了这个问题,添加了我现在面临的一些其他问题。您可以研究一下吗?编辑后,问题不清楚。例如,如果用户提供了“a.txt”和“b.txt”“如果我用移动命令替换ECHO%%I,则作为输入"你的意思是什么?用b替换a?复制到其他地方?请编辑你的问题并澄清你想要什么,不要给出虚假的例子,只给出预期的输出样本和正确的输入。@GerhardBarnard我编辑了这个问题。看看编辑是否有助于理解。我的意思是我想用移动命令替换整个
ECHO
语句因此循环对用户提供的所有文件执行move-in循环。在我的示例中,它将运行两次,一次移动“a.txt”,然后移动“b.txt”。那么计数与它有什么关系?
for %%i in (%*) do echo "%%~i"