2011-10-13 98 views
15

我創建了一個簡單的批處理文件來重新組織一組文件/文件夾。它的工作原理應該如此,但我需要將結果打印到日誌文件中。我需要輸出每個操作的結果(創建目錄,移動文件,重命名/刪除文件)。當我使用命令 >>results.txt我能從中得到的是「移動1個文件」。一噸。代碼如下:將批處理文件結果打印到文本文件

FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na 
TREE /f >> tree.txt 
@GOTO :EOF 

:read 
@set FILE=%1 
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c 
@GOTO :EOF 

:makeDir 
@set ACCOUNT=%1 
@set CHECK=%2 
mkdir %ACCOUNT% 
CALL :move 
@GOTO :EOF 

:move 
MOVE %FILE%.gif %ACCOUNT% 
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif 
DEL %FILE%.txt 
@GOTO :EOF 

每次執行操作時如何打印到日誌文件(results.txt)?

編輯:新代碼瓦特/回聲:

@echo off 
FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na 
TREE /f >> tree.txt 
@GOTO :EOF 

:read 
@set FILE=%1 
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c 
@GOTO :EOF 

:makeDir 
@set ACCOUNT=%1 
@set CHECK=%2 
mkdir %ACCOUNT% 
@echo Made directory for %ACCOUNT% >> results.txt 
CALL :move 
@GOTO :EOF 

:move 
MOVE %FILE%.gif %ACCOUNT% 
@echo %FILE% moved to %ACCOUNT% 
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif 
@echo %ACCOUNT%\%FILE% renamed %CHECK% >> results.txt 
DEL %FILE%.txt 
@echo %FILE% deleted. >> results.txt 
@GOTO :EOF 
+0

您試着打開ECHO? –

+0

它實際上,不是嗎?它應該回應move和ren命令的調用。 –

回答

14

沒有什麼不對您的標準重定向的出到一個文件中。 Move和mkdir命令不輸出任何內容。如果你真的需要有這些命令的日誌記錄,那麼你需要顯式地回顯標準輸出,說明你剛剛執行了什麼。

的批處理文件,例如:

@ECHO OFF 
cd bob 
ECHO I just did this: cd bob 

運行命令行:

myfile.bat >> out.txt 

myfile.bat > out.txt 
+1

好了,所以我只是嘗試添加線條線: echo >> results.txt%FILE%.gif移動到%ACCOUNT% 這樣做使批處理文件創建一個名稱爲每個.gif和.txt的目錄在文件夾中...:/ –

+0

您必須關閉ECHO,然後回顯您的評論文本,而不是實際的命令。看到我上面的更新。 –

+0

我不確定我關注。我試過了,而不是將echo附加到results.txt文件,它創建了一個名爲「Directory」的目錄。 (我試圖回顯的文本是「創建的目錄」。) –

17

可以這塊代碼添加到您的批處理的頂部file:

@Echo off 
SET LOGFILE=MyLogFile.log 
call :Logit >> %LOGFILE% 
exit /b 0 

:Logit 
:: The rest of your code 
:: .... 

它基本上將:Logit方法的輸出重定向到LOGFILEexit命令用於確保在執行:Logit後退出批處理。

2

對於顯示文本文件的批處理文件的結果,你可以使用

此命令

chdir > test.txt 

該命令將重定向結果TEST.TXT。

當您打開test.txt的,你會發現目錄的電流通路中的test.txt

6

打印結果到文本文件

我們可以按照

echo "test data" > test.txt 

這將創建一個測試。 txt文件和寫入的「測試數據」

如果你想追加,然後

echo "test data" >> test.txt 
+1

感謝您解釋'>'和'>>'之間的區別 – BigHeadCreations

1

第1步:只需將所有必需的代碼放在「MAIN.BAT」文件中。

第2步:創建另一個bat文件,比如說MainCaller。蝙蝠,只需複製/粘貼這3行代碼:

REM THE MAIN FILE WILL BE CALLED FROM HERE.......... 
CD "File_Path_Where_Main.bat_is_located" 
MAIN.BAT > log.txt 

第3步:只需雙擊「MainCaller.bat」。

所有輸出都將被記錄到名爲「log」的文本文件中。

0

您是否嘗試過在刪除@echo%FILE%之後移動DEL%FILE%.txt%。 >> results.txt,使它看起來像這樣?

@echo %FILE% deleted. >> results.txt 
DEL %FILE%.txt 
相關問題