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

Chr*_* V. 17 redirect command-line batch-file

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

每当执行某个操作时,如何打印到日志文件(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
Run Code Online (Sandbox Code Playgroud)

Rad*_*dix 19

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

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

:Logit
:: The rest of your code
:: ....
Run Code Online (Sandbox Code Playgroud)

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


Ste*_*bbi 15

将标准输出重定向到文件没有任何问题.Move和mkdir命令不输出任何内容.如果您确实需要对这些命令进行日志跟踪,那么您需要显式回显标准输出,指示您刚刚执行的操作.

批处理文件,例如:

@ECHO OFF
cd bob
ECHO I just did this: cd bob
Run Code Online (Sandbox Code Playgroud)

从命令行运行:

myfile.bat >> out.txt
Run Code Online (Sandbox Code Playgroud)

要么

myfile.bat > out.txt
Run Code Online (Sandbox Code Playgroud)


Nik*_* K. 6

用于将结果打印到文本文件

我们可以效仿

echo "test data" > test.txt
Run Code Online (Sandbox Code Playgroud)

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

如果你想追加

echo "test data" >> test.txt
Run Code Online (Sandbox Code Playgroud)

  • 感谢您解释“>”和“>>”之间的区别 (2认同)