Windows 脚本批处理的日志文件

Windows 脚本批处理的日志文件,windows,cmd,Windows,Cmd,我有上面的批处理文件,它调用多个bat文件。我已经测试了脚本,效果很好。 我唯一的问题是生成的日志文件包含所有信息,而且是一个大文件。 是否可以只记录注释和回音,并排除屏幕中执行的内容? 例如,我不希望移动的1个文件显示在日志文件中。我已将您的代码重新编写为使用通用函数,该函数可将代码重复消除为更易于管理的形式,并允许您根据需要通过编辑变量列表向FTP和脚本部分添加或删除任何步骤 我也只返回不包含“已移动文件”的输出 或者,如果您真的只想打印状态行,您可以将其更改为只将状态行打印到日志中,而不将

我有上面的批处理文件,它调用多个bat文件。我已经测试了脚本,效果很好。
我唯一的问题是生成的日志文件包含所有信息,而且是一个大文件。
是否可以只记录注释和回音,并排除屏幕中执行的内容?

例如,我不希望移动的1个文件显示在日志文件中。

我已将您的代码重新编写为使用通用函数,该函数可将代码重复消除为更易于管理的形式,并允许您根据需要通过编辑变量列表向FTP和脚本部分添加或删除任何步骤

我也只返回不包含“已移动文件”的输出

或者,如果您真的只想打印状态行,您可以将其更改为只将状态行打印到日志中,而不将所有信息打印到日志中(这样做是因为您在调用其他步骤时将重定向到日志)

这也是在实际执行所有goto命令之前编写的,不需要对顶部的每个命令进行调用

这是重构后的代码,我还没有测试过,但应该没问题,我得出去几小时,你可以问任何问题,有时间我很乐意回答

@(Setlocal EnableDelayedExpansion
回音
设置“\u FolderList=“C:\test\folder1”“C:\test\folder1”“C:\test\folder1”
设置“\u ScriptList=“c:\test\script1.bat”“E:\script2.bat”“c:\Path\To\script3.bat”“c:\Path\To\script4.bat”
设置“\u脚本\u失败=1,2,3,4”
设置“\u脚本\u已完成=”
设置“\u Continue=0”
呼叫:GetDateTime
设置“MasterLog=all\u log\u all\u log!IsoDate!\uDate!IsoTime!.log”
)
电话:Main
(完)
退出/B
)
:Main
设置/A“\u计数器=0”
对于%%\u IN(%\u FolderList%)执行以下操作(
如果已定义,请继续(
设置/A“\u计数器+=1”
呼叫:检查FTP_列表%%~_
)
)>>“%MasterLog%”
设置/A“\u计数器=0”
对于%%\u IN(%\u FolderList%)执行以下操作(
如果已定义,请继续(
设置/A“\u计数器+=1”
呼叫:DoCommands\u列表%%~_
)
)>>“%MasterLog%”
如果已定义,请继续(
回显今天日期%日期%在%时间%
Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、#########################
)
后藤:EOF
:CheckFTP\u列表
REM文件夹为空
对于/f“delims=“%%a in('dir/b/a-D“%%*)do(
设置“_Continue=%%a”)
如果未定义,请继续(
回显。今天日期在%Date%在%Time%
回声。FTP-%计数器%文件丢失#########################
)
后藤:EOF
:DoCommands\u列表
调用“*%”| FIND/I/V“file(s)moved”&REM仅输出不包含已移动文件的行。
如果%errorlevel%NEQ 0(
设置“_Continue=”
设置“\u Scripts\u Completed=%\u Scripts\u Completed:,1=1%”
设置“\u脚本\u失败=!\u脚本\u失败:%\u脚本\u完成%=!”
回显今天日期%日期%在%时间%
回显。脚本%Counter%上遇到错误!--已完成脚本:!\u脚本\u已完成!--失败脚本:!\u脚本\u失败!
)否则(
设置“\u Scripts\u Completed=%\u Scripts\u Completed:,1=1%,%Counter%”
)
后藤:EOF
:GetDateTime
对于/F“代币=1-7 delims=MTWFSmtwfsouehrandit:-\/。”%%A IN(“%DATE%%TIME:=0%”)DO(
对于/F“代币=2-4个代币=()”%%a IN('ECHO.^ DATE')DO(
设置“%%~a=%%~a”
设置“%%~b=%%~b”
设置“%%~c=%%~c”
设置“HH=%%~D”
设置“Mn=%%~E”
设置“SS=%%~F”
设置“Ms=%%~G”
)
)
设置“等时=%HH%。%Mn%。%SS%。%Ms%”
设置“IsoDate=%yy%-%mm%-%dd%”
后藤:EOF

我已将您的代码重新编写为使用通用函数,该函数可将代码重复数据消除为更易于管理的形式,并允许您根据需要通过编辑变量列表向FTP和脚本部分添加或删除任何步骤

我也只返回不包含“已移动文件”的输出

或者,如果您真的只想打印状态行,您可以将其更改为只将状态行打印到日志中,而不将所有信息打印到日志中(这样做是因为您在调用其他步骤时将重定向到日志)

这也是在实际执行所有goto命令之前编写的,不需要对顶部的每个命令进行调用

这是重构后的代码,我还没有测试过,但应该没问题,我得出去几小时,你可以问任何问题,有时间我很乐意回答

@(Setlocal EnableDelayedExpansion
回音
设置“\u FolderList=“C:\test\folder1”“C:\test\folder1”“C:\test\folder1”
设置“\u ScriptList=“c:\test\script1.bat”“E:\script2.bat”“c:\Path\To\script3.bat”“c:\Path\To\script4.bat”
设置“\u脚本\u失败=1,2,3,4”
设置“\u脚本\u已完成=”
设置“\u Continue=0”
呼叫:GetDateTime
设置“MasterLog=all\u log\u all\u log!IsoDate!\uDate!IsoTime!.log”
)
电话:Main
(完)
退出/B
)
:Main
设置/A“\u计数器=0”
对于%%\u IN(%\u FolderList%)执行以下操作(
如果已定义,请继续(
设置/A“\u计数器+=1”
呼叫:检查FTP_列表%%~_
)
)>>“%MasterLog%”
设置/A“\u计数器=0”
对于%%\u IN(%\u FolderList%)执行以下操作(
如果已定义,请继续(
设置/A“\u计数器+=1”
呼叫:DoCommands\u列表%%~_
)
)>>“%MasterLog%”
如果已定义,请继续(
回显今天日期%日期%在%时间%
Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、Echo、#########################
)
后藤:EOF
:CheckFTP\u列表
REM文件夹为空
对于/f“delims=“%%a in('dir/b/a-D“%%*)do(
设置“_Continue=%%a”)
如果未定义,请继续(
回显。今天日期在%Date%在%Time%
回声。FTP-%计数器%文件丢失#########################
)
后藤:EOF
:DoCommands\u列表
调用“*%”| FIND/I/V“file(s)moved”&REM仅输出不包含已移动文件的行。
如果%errorlevel%NEQ 0(
设置“_Continue=”
设置“\u Scripts\u Completed=%\u Scripts\u Completed:,1=1%”
设置“\u脚本\u失败=!\u脚本\u失败:%\u脚本\u完成%=!”
回显今天日期%日期%在%时间%
ECHO。在Scri上遇到错误
@echo off
    call :checkFTP1 %* > all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :checkFTP2 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :checkFTP3 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :doCommands1 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :doCommands2 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :doCommands3 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    call :doCommands4 %* >> all_log_all_log_%date:~10,4%%date:~4,2%%date:~7,2%.log 2>&1
    exit /b
    
    
:checkFTP1

    @echo off
Setlocal

:: Is folder empty
set _TMP=
for /f "delims=" %%a in ('dir /b "C:\test\folder1"') do set _TMP="%%a"
IF {%_TMP%}=={} (
    goto :Exit1
) ELSE (
    goto :checkFTP2
)
Endlocal


:checkFTP2
    @echo off
Setlocal

:: Is folder empty
set _TMP=
for /f "delims=" %%a in ('dir /b "C:\test\folder2"') do set _TMP="%%a"
IF {%_TMP%}=={} (
    goto :Exit2
) ELSE (
    goto :checkFTP3
)
Endlocal


:checkFTP3
    @echo off
Setlocal

:: Is folder empty
set _TMP=
for /f "delims=" %%a in ('dir /b "C:\test\folder3"') do set _TMP="%%a"
IF {%_TMP%}=={} (
    goto :Exit3
) ELSE (
    goto :doCommands1
)
Endlocal


:doCommands1
    call script1.bat
    if %errorlevel% EQU 0 (goto :doCommands2 ) Else ( ECHO error on script 1 ,2,3,4)
    exit
:doCommands2
    call script2.bat
    if %errorlevel% EQU 0 (goto :doCommands3 ) Else ( ECHO Script 1 Completed  Successfully , ERRORS on  2,3,4)
    exit
:doCommands3
    call script3.bat
    if %errorlevel% EQU 0 (goto :doCommands4) Else ( ECHO Script 2 Completed  Successfully , ERRORS on 3,4)
    exit
:doCommands4
    call script4.bat
    if %errorlevel% EQU 0 (goto :completed1) Else ( ECHO Script 3 Completed  Successfully , ERRORS on  4)
    exit
:Exit1 

Echo Today Date  %DATE%  at %Time%
Echo ###################FTP-1 FILES  MISSING  #########################

Exit

:Exit2

Echo Today Date  %DATE%  at %Time%
Echo ###################FTP-2 FILES  MISSING (#########################

Exit

:Exit3

Echo Today Date  %DATE%  at %Time%
Echo ###################FTP-3 FILES  MISSING   #########################

Exit
    
    
:completed1


Echo Today Date  %DATE%  at %Time%
Echo ###################all scripts  Completed  Successfully#########################

Exit