我有一个类似这样的批处理文件
for %%a in (1 2 3 4 5) do dir > %%a.output
%%a
只给了我一个.
如何使用变量%%a
的值来分配文件名(例如1.output,2.output)?
答案 0 :(得分:2)
你必须包围你的变量:
for %a in (1 2 3 4 5) do dir > %a%.output
答案 1 :(得分:1)
您的命令语法对我来说是正确的。我希望批处理文件的行可以生成这些命令:
dir > 1.output
dir > 2.output
dir > 3.output
dir > 4.output
dir > 5.output
反过来会创建1.output
,2.output
等
作为调试提示,您可以尝试将该行更改为以下内容:
for %%a in (1 2 3 4 5) do echo dir ^> %%a.output
请注意^
,它用于转义>
重定向。
此外:
%%a
但在命令行%a
。for
个变量
区分大小写; %%A
是不同的
来自%%a
。<强>更新强>
由于我必须在这样一个旧操作系统版本下运行批处理文件已经很长时间了,但如果重定向在当天与for
不兼容,我不会感到惊讶。
你可以试试这个:
for %%a in (1 2 3 4 5) do call helper.bat %%a
在helper.bat中:
dir > %1.output
或者,如果您不喜欢额外的批处理文件,请将它们合并到一个文件中:
if .%1==.sub goto do_sub
for %%a in (1 2 3 4 5) do call %0 sub %%a
goto end
:sub
shift
dir > %1.output
:end
答案 2 :(得分:0)
我没有Win98系统,但是在DOS框中输入for /?
,看看是否有可以帮助你的东西。
在基于NT的Windows操作系统中执行此操作的方法是:
FOR /L %variable IN (start,step,end) DO command [command-parameters]
所以你的陈述是这样的:
FOR /L %%a IN (1,1,5) DO echo dir ^> %%a.output
也许在Win98下的DOS中有类似的东西。