2

我正在使用 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.dat在哪里命名n.dat

4

3 回答 3

7

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

setlocal enabledelayedexpansion
for %%i in (data/5Node/*.dat) do (
  set inputFile=%%i
  set outputFile="!inputFile!.out"
  optAlg "!inputFile!" 500 > !outputFile!
)
于 2013-08-29T03:14:34.733 回答
5

使用>>"file.txt"和删除^

编辑:您还需要使用延迟扩展,否则应该可以:

for %%i in (data\5Node\*.dat) do optAlg "%%i" 500 >>"%%~ni.out"
于 2013-08-29T04:44:15.557 回答
2

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

for %%i in (data/5Node/*.dat) do @optAlg %%i 500 > "%%~i.out"
于 2013-08-29T09:40:21.793 回答