2013-06-12 53 views
1

我只是需要一些幫助,爲我正在運行的批處理腳本創建日誌文件。當我將文件從一臺服務器移動到另一臺服務器時,知道什麼時候移動了一些東西是很方便的。MOVE操作完成後批量生成日誌文件

目前,我已經嘗試了一些事情,如:

if %errorlevel% GTR 0 (echo MOVE FAILURE>Logs\log.txt) else (echo MOVE SUCCESSFUL>Logs\log.txt) 

但這只是到達馬虎代碼,我將不得不把它的每一個行後,它並沒有告訴我我剛剛移動的文件的名稱。

這是我的時刻代碼:

@Echo OFF 

cd C:\Test 

MOVE "Home\*.*" "Work" 

Echo COMPLETE 
Pause 

當然還有更多的線,大約再過20,但是出於測試的緣故,我只是有一個文件夾,該文件夾的名稱只是安慰劑。

現在我可以通過移動命令

C:\Test\Home\Test.txt 
    1 file(s) moved. 

使用默認返還屏,但我不知道怎麼到輸出轉移到一個簡單的txt文件,我可以只保留一個記錄了。

順便說一下,如果有更好的方法或更好的方案寫在讓我知道,我會調查!

+0

這是行不通? 'MOVE stuff。* some_dir> log.txt 2>&1' – Lynn

+1

您應該調查ROBOCOPY命令。它可以選擇移動文件,並且可以給出完成日誌的完整日誌。 – dbenham

+0

@dbenham Robocopy看起來像一個絢麗的想法,但我怎樣才能使代碼整潔 - 因爲我有20其他的東西,包括! –

回答

1

dbenham的禮貌:你應該調查ROBOCOPY命令。它可以選擇移動文件,並且可以給出完成日誌的完整日誌。

robocopy "Home" "Office" /MOV /NJH /NP /NS /NC /LOG+:"Desktop\Log-%date:/=%-%time:~0,2%;%time:~3,2%.txt" 

是我用過的!工作正常,不完美,但讓我監督已經移動的東西!

1

試試這個:

 
@echo off&setlocal 
set "fname=" 
for %%i in (*) do set "fname=%%~i"&call:process 
goto:eof 

:process 
MOVE "%fname%" "test" 
if %errorlevel% neq 0 (echo MOVE "%fname%" FAILURE) else echo MOVE "%fname%" SUCCESSFUL 
goto:eof 
+0

嗨,這沒有奏效..但感謝您的幫助! –

+0

@PhillipBetts你是對的,做了一個編輯,對不起。 – Endoro

+0

再次,我不能讓該文件工作以及..甚至bby設置一個fname? –