Batch file 循环日志记录的命令行
我试图记录for循环的结果,但只得到一个空文件 我尝试的是:Batch file 循环日志记录的命令行,batch-file,for-loop,logging,command-line,cmd,Batch File,For Loop,Logging,Command Line,Cmd,我试图记录for循环的结果,但只得到一个空文件 我尝试的是: for %%f in (mathml*.xml) do ( "D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF >> result.log ) 及 我一直在使用日志记录功能,应该是非常简单和基本的,但显然不是在for循环中 有人知道怎么做吗,还是我忽略了什么 谢谢 请尝试以下代码: @echo off rem Delete log fil
for %%f in (mathml*.xml) do (
"D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF >> result.log
)
及
我一直在使用日志记录功能,应该是非常简单和基本的,但显然不是在for循环中
有人知道怎么做吗,还是我忽略了什么
谢谢 请尝试以下代码:
@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
在使用将formatter.exe的输出写入stdout和stderr日志文件之前,首先删除日志文件
环境变量ProgramFiles
的值在循环的命令行中使用,而不是D:\ProgramFiles
由于mathml*.xml
也可以将文件名与名称中的空格相匹配,因此对文件名的引用用引号括起来,因为如果文件名在名称或路径中包含1个或多个空格,则formatter.exe
的参数列表可能无效
文件名用完整路径指定,这有助于在发生错误时读取日志文件
如果日志文件是0字节的空文件,则在循环执行完成后删除该日志文件
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
del/?
获取/?
如果/?
可能该程序输出到stderr,在屏幕上出现任何文本之前,尝试用2>&1
重定向它?(要放入日志文件的文本)是的,格式化程序以cmd格式生成文本
@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