将批处理文件结果打印到文本文件

时间:2011-10-13 16:48:13

标签: command-line batch-file redirect

我创建了一个简单的批处理文件来重新组织一组文件/文件夹。它正常工作,但我需要将结果打印到日志文件中。我需要输出每个动作的结果(创建目录,移动文件,重命名/删除文件)。当我使用命令>> 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

6 个答案:

答案 0 :(得分:19)

您可以将这段代码添加到批处理文件的顶部:

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

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

它基本上将:Logit方法的输出重定向到LOGFILEexit命令用于确保在执行:Logit后退出批处理。

答案 1 :(得分:15)

将标准输出重定向到文件没有任何问题。 Move和mkdir命令不输出任何内容。如果你真的需要有这些命令的日志记录,那么你需要明确地回显标准输出,指出你刚刚执行了什么。

批处理文件,例如:

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

从命令行运行:

myfile.bat >> out.txt

myfile.bat > out.txt

答案 2 :(得分:6)

对于打印结果到文本文件

我们可以关注

echo "test data" > test.txt

这将创建test.txt文件并编写“测试数据”

如果你想追加

echo "test data" >> test.txt

答案 3 :(得分:3)

要在文本文件中显示批处理文件的结果,可以使用

这个命令

chdir > test.txt

此命令会将结果重定向到test.txt。

当你打开test.txt时,你会在test.txt

中找到目录的当前路径

答案 4 :(得分:3)

步骤1:只需将所有必需的代码放入" MAIN.BAT"文件。

第2步:创建另一个bat文件,比如MainCaller.bat,然后复制/粘贴这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"。

的文本文件中

答案 5 :(得分:0)

您是否尝试将DEL%FILE%。txt%移至删除@echo%FILE%之后。 >> results.txt这样看起来像这样吗?

@echo %FILE% deleted. >> results.txt
DEL %FILE%.txt