2014-03-12 45 views
0

腳本:CMD輸出到LOGFILE.TXT

pushd "\\server1\share\Data\" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    copy "%%~fp" ""\\server2share\data\%%~n\%%~nxp" dir >> \\server\share\logfile.txt 

) 

我想記錄輸出每次運行此命令。該腳本根據名稱複製pdf。但是當我運行腳本。沒有創建日誌文件。

回答

0

編輯以適應評論

pushd "\\server1\share\Data\" 
set "logFile=\\server\share\logfile.txt" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    if not exist ""\\server2share\data\%%~n\" (
     >>"%logFile%" echo SKIPPED : "%%~nxp" 
    ) else (
     copy "%%~fp" "\\server2share\data\%%~n\%%~nxp" 
     if errorlevel 1 (
      >>"%logFile%" echo FAILED : "%%~nxp" 
     ) else (
      >>"%logFile%" echo COPIED : "%%~nxp" 
     ) 
    ) 
) 
popd 

你在一個陌生的地方,改爲呼應DIR命令。而且,我不確定所有的路徑是否正確。

+0

此評論在文件複製時添加了日誌?而當它不存在它不記錄? (我只想知道,僅此而已) – user3360442

+0

每個** PUSHD **都應該有相應的** POPD **。否則,如果您反覆運行腳本,您將遇到內存泄漏和/或磁盤驅動器盤符被耗盡。 – vitsoft

+0

爲什麼?它只使用一個目錄。 – user3360442

0
pushd "\\server1\share\Data\" 
for %%p in (*.pdf) do if /i ".pdf"=="%%~xp" for /f "tokens=1 delims=_" %%n in ("%%~np") do ( 
    md "\\server2share\data\%%~n" 2>nul 
    copy "%%~fp" "\\server2share\data\%%~n\%%~nxp" 
    dir >> \\server\share\logfile.txt 

) 

(未經測試)

我假設你的紙條是從原來的職位排列的方式。

如果要執行一系列單獨的命令,它們需要用&分開,或者位於單獨的行上。

你在你的copy命令有一個額外的

插入一個md命令的錯誤消息的抑制,以確保目標目錄存在。

+0

md命令是否也使目錄的? – user3360442

+0

是 - 'md'和'mkdir'是同義詞。 – Magoo

+0

已經在目錄中的文件夾已編程,所以不需要添加..我只想檢查文件是否被複制(或不是)日誌文件。 – user3360442

0

這將創建一個日誌什麼是上顯示cmd的屏幕,而它正在運行,但你不會在屏幕上看到的任何輸出。您可以使用tee過濾器,如果你還需要看到的畫面輸出。

mybatch.bat>file.log