我有一个批处理文件,它做这样的事情
for %%a in (1 2 3 4 5) do dir > %%a.output
%%a
只是给了我一个.
如何使用变量的值%%a
来分配文件名(例如 1.output、2.output)?
我有一个批处理文件,它做这样的事情
for %%a in (1 2 3 4 5) do dir > %%a.output
%%a
只是给了我一个.
如何使用变量的值%%a
来分配文件名(例如 1.output、2.output)?
你必须包围你的变量:
for %a in (1 2 3 4 5) do dir > %a%.output
你的命令语法对我来说是正确的。我希望批处理文件的那一行按原样生成这些命令:
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
我没有 Win98 系统可供我使用,但进入for /?
一个 DOS 框,看看那里有没有什么东西可以帮助你。
在基于 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也有类似的东西。