2015-10-12 103 views
2

這應該是簡單的不知道爲什麼它不工作... 我有一個2 cmds的批處理文件,並試圖讓它將輸出寫入日誌文件。批處理文件創建一個日誌文件

這裏是什麼在我的批處理文件:

PUSHD "\\My Very Long\Exact Directory\" >>logfile.txt 
for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d *.xlsm') do del "%%F" >>logfile.txt 

的PUSHD是因爲這個文件是在一個遠程文件存儲\\My Very Long\Exact Directory\,我想應採取的目錄內的動作,其中的批處理文件而不是它從中被調用的目錄。第二個命令通過刪除舊副本來清理目錄。

當我運行批處理時,通過從遠程服務器調用它,或者通過直接雙擊它,cmd窗口打開並運行清理。它會在名爲'logfile.txt'的目錄中創建一個文件,但它是空的。

計劃從遠程服務器調用此批處理文件的過程已計劃好,並且我希望看到稍後調用此過程時發生了什麼。如何獲得結果以寫入日誌文件。我想它應該與cmd窗口彈出窗口打開並顯示的內容非常相似(不一樣)。

我引用這個其他職位:Redirecting Output from within Batch file


增加更多,因爲我已經被告知PUSHD也不DEL有輸出... 我把一個暫停的文件中捕捉cmd窗口。我期待捕獲這些信息,當然還有任何發生的錯誤。也許這是錯誤的方法?

X:\File Path\BackUps>PUSHD "\\My Very Long\Exact Directory\" 1>>logfile.txt 
Y:\File Path\BackUps>for /F "skip=7 eol=: delims=" %F in ('dir /b /o-d *.xlsm') do del "%F" 1>>logfile.txt 
Y:\File Path\BackUps>del "2015 CSLD Weekly Comment Analysis 2015-10-10 9_11_09 .xlsm" 1>>logfile.txt 
Y:\File Path\BackUps>del "2015 CSLD Weekly Comment Analysis 2015-10-10 23_55_29 .xlsm" 1>>logfile.txt 
Y:\File Path\BackUps>pause 
Press any key to continue . . . 
+3

您的日誌文件是空的,因爲'pushd'和'del'都不會向屏幕輸出任何內容。只有在使用'>'和'>>'時,屏幕上顯示的內容纔會發送到文件。 – SomethingDark

+0

@Mofi完美謝謝!我特別感謝您注意一個詳細而簡潔的答案。我相信我已經爲您提供了正確答案的功勞。再次,非常好的幫助,謝謝! – AdrianBoeh

回答

2

你可以使用下面的批號重定向標準輸出標準錯誤到一個日誌文件。

@echo off 
>>logfile.txt 2>&1 (
    echo INFO: Making "\\My Very Long\Exact Directory\" the working directory ... 
    PUSHD "\\My Very Long\Exact Directory\" 
    echo INFO: Deleting old *.xlsm files in this directory ... 
    for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d *.xlsm') do (
     echo INFO: Deleting file "%%F" ... 
     del "%%F" 
    ) 
) 

另請參閱Microsoft TechNet文章Using command redirection operators

>>logfile.txt每隔文本輸出附加到標準輸出(標準輸出)的文件重定向標準輸出到日誌文件中。日誌文件只有在不存在的情況下才會被創建。

2>&1重定向stderr的(標準誤差),以標準輸出得到最終標準消息 - 由所使用的命令到日誌文件以及錯誤消息輸出 - 與echo命令行。

相關問題