我正在使用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
答案 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"