2011-10-13 99 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 
相关问题