批量脚本日志记录,它运行双倍?

时间:2014-10-06 10:35:54

标签: batch-file windows-7-x64

我写了一个批处理脚本来在Windows 7上备份我的Thunderbird客户端。它运行正常,但我遇到了日志记录部分的问题。

基本上,我希望它能够在运行时查看命令窗口中发生的情况,并将所有输出记录到.log文件中。

问题:它记录到文件,但在命令窗口中没有任何操作。然后在它完成后运行AGAIN,但这次显示命令窗口中发生了什么。

包含:脚本。日志文件。

脚本:

 @ECHO ON
rem
call :Logit>>%Desktop%\"%DATE:~7,2%.%DATE:~4,2%.%DATE:~-4%-ThunderbirdBackup".log
:Logit

echo                           Backup Start at = %date% %time%
echo Beginning Automatic Backup and Encryption for Thunderbird
echo This will take approximately 45 seconds to complete

echo Killing Thunderbird.exe
taskkill /F /IM thunderbird.exe

echo Give the computer a moment to complete task
timeout /T 3

echo Zipping to Desktop
"C:\Program Files\7-Zip\7z.exe" a -t7z %Desktop%\"%DATE:~7,2%.%DATE:~4,2%.%DATE:~-4%-ThunderbirdBackup".7z %AppData%\Thunderbird\Profiles\ -m0=lzma2 -mx3 -mmt=8 -mhe=on

echo                           Backup Complete at = %date% %time%

感谢您提供的任何帮助。

日志: ThunderbirdScript-Log-Pastebin

1 个答案:

答案 0 :(得分:1)

您正在调用:logit“函数”两次;首先是call,第二是通过。

只需在goto :eof之后添加call,即可完成。

然后,要同时记录到文件并在stdout中显示,您需要tee http://en.wikipedia.org/wiki/Tee_(command)调用的输出。

 call :logit | tee ThunderbirdBackup.log
 goto :eof

 :logit
 ...
相关问题