Windows批处理 - 将程序输出重定向到for循环中的文件

时间:2013-08-29 02:25:09

标签: batch-file

我正在使用Windows 7。

我有一个名为optAlg.exe的程序,我在批处理脚本的for循环中调用,我想将optAlg.exe的输出重定向到%outputFile%。当我在批处理脚本中运行以下循环时,optAlg.exe的输出将写入控制台。

for %%i in (data/5Node/*.dat) do @(
  set inputFile=%%i
  set outputFile="%inputFile%.out"
  optAlg %inputFile% 500 ^> %outputFile%
)

如何将其输出到文件而不是控制台?

编辑:我正在尝试做的事情就是打电话

optAlg 1.dat 500 > 1.dat.out
optAlg 2.dat 500 > 2.dat.out
...
optAlg n.dat 500 > n.dat.out

我所拥有的.dat个文件的名称为1.datn.dat

3 个答案:

答案 0 :(得分:7)

您需要使用setlocal enabledelayedexpansion和相关的!var!语法。

setlocal enabledelayedexpansion
for %%i in (data/5Node/*.dat) do (
  set inputFile=%%i
  set outputFile="!inputFile!.out"
  optAlg "!inputFile!" 500 > !outputFile!
)

答案 1 :(得分:4)

使用>>"file.txt"并移除^

编辑:您还需要使用延迟扩展,否则这应该有效:

for %%i in (data\5Node\*.dat) do optAlg "%%i" 500 >>"%%~ni.out"

答案 2 :(得分:2)

摆脱环境变量:你不需要它们:

for %%i in (data/5Node/*.dat) do @optAlg %%i 500 > "%%~i.out"