我正在尝试记录for循环的结果,但只获取一个空文件。
我试过的是:
for %%f in (mathml*.xml) do (
"D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF >> result.log
)
和
for %%f in (mathml*.xml) do (
"D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF
) >> result.log
我一直都在使用日志记录功能,而且应该是非常好的前进和基本使用,但显然不是在for循环中。?
有谁知道怎么做,或者我忽略了什么。
谢谢!
答案 0 :(得分:0)
请尝试以下代码:
@echo off
rem Delete log file from previous batch execution.
del result.log 2>nul
for %%I in (mathml*.xml) do (
"%ProgramFiles%\formater\formater.exe" -d "%%~fI" -o "%%~dpnI.pdf" -p @PDF 2>&1 >>result.log
)
for %%I in (result.log) do if %%~zI == 0 del result.log
在使用command redirection operators将formater.exe
的输出写入 stdout 和 stderr 到日志文件之前,先删除日志文件。
而不是D:\ProgramFiles
环境变量ProgramFiles
的值在 FOR 循环的命令行中使用。
由于mathml*.xml
也可以匹配名称中带有空格的文件名,因此文件名的引用用引号括起来,因为formater.exe
的参数列表可能无效,文件名包含1或更多名称或路径的空格。
使用完整路径指定文件名,这可能有助于在发生错误时读取日志文件。
如果日志文件是一个0字节的空文件,则在循环执行完成后删除日志文件。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
del /?
for /?
if /?