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

use*_*301 2 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%
)
Run Code Online (Sandbox Code Playgroud)

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

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

optAlg 1.dat 500 > 1.dat.out
optAlg 2.dat 500 > 2.dat.out
...
optAlg n.dat 500 > n.dat.out
Run Code Online (Sandbox Code Playgroud)

.dat我所拥有的文件是1.dat通过命名的n.dat

kik*_*iyo 7

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

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


fox*_*ive 5

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

编辑:您还需要使用延迟扩展,或者这应该工作:

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