2015-09-04 206 views
0

我正在嘗試記錄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循環..?

有誰知道如何做到這一點,或者我是否忽略了一些東西。

謝謝!

+1

[調試您的批處理文件(http://www.robvanderwoude.com/battech_debugging.php) – JosefZ

+1

也許這節目輸出到標準錯誤,嘗試在'>>' – wOxxOm

+0

之前用'2>&1'重定向它是否在屏幕上出現任何文字? (您想要放入日誌文件的文本) – aschipfl

回答

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 

日誌文件的formater.exe輸出寫到標準輸出標準錯誤使用command redirection operators日誌文件之前先刪除。

而不是D:\ProgramFiles環境變量ProgramFiles的值在命令行上使用FOR循環。

由於mathml*.xml還可以匹配在名稱中有空格的文件名,在文件名中的引用引號括起來,因爲否則的參數列表formater.exe可與含名或路徑1個或多個空格的文件名無效。

文件名是使用完整路徑指定的,這可能有助於在發生錯誤時讀取日誌文件。

如果循環執行完成後,日誌文件將被刪除,如果它是一個0字節的空文件。

對於理解使用的命令以及它們如何工作,打開命令提示符窗口中,執行有下面的命令,並完全讀取顯示每個命令的所有幫助頁面非常謹慎。

  • del /?
  • for /?
  • if /?