Pank
28-11-2017, 15:04
Помогите с батником, который бы логировал выполнение команд в файл с датой и временем выполнения. Нарыл в интернете несколько примеров, но нормального результата пока получить не удалось, строки дублируются почему. Что я делаю не так?
@echo off
setlocal enableextensions enabledelayedexpansion
call :OutLog "run bat"
call :Outf
call :OutLog "end bat"
endlocal
exit /b 0
:OutLog
setlocal enableextensions enabledelayedexpansion
set sLine=%~1
for /f "usebackq delims=" %%i in (`date /t`) do set sDate=%%~i
for /f "usebackq delims=" %%i in (`time /t`) do set sTime=%%~i
>>"%date%.txt" <nul set /p sVar=%sDate%%sTime%
if defined sLine (
>>"%date%.txt" echo %sLine%
) else (
>>"%date%.txt" echo.
)
:Outf
setlocal enableextensions enabledelayedexpansion
set sLine1=%~1
::for /f "usebackq delims=" %%i in (`date /t`) do set tDate=%%~i
::for /f "usebackq delims=" %%i in (`time /t`) do set tTime=%%~i
for /f "usebackq delims=" %%i in (`xcopy /y "U:\test1\07.log" "U:\test2"`) do set sCopy=%%~i
>>"%date%.txt" <nul set /p sVar1=%sDate%%sTime% %sCopy%
if defined sLine1 (
>>"%date%.txt" echo %sLine1%
) else (
>>"%date%.txt" echo.
)
endlocal
exit /b
28.11.2017 15:02 run bat
28.11.2017 15:02 Скопировано файлов: 1. run bat
Скопировано файлов: 1.
28.11.2017 15:02 end bat
28.11.2017 15:02 Скопировано файлов: 1. end bat
@echo off
setlocal enableextensions enabledelayedexpansion
call :OutLog "run bat"
call :Outf
call :OutLog "end bat"
endlocal
exit /b 0
:OutLog
setlocal enableextensions enabledelayedexpansion
set sLine=%~1
for /f "usebackq delims=" %%i in (`date /t`) do set sDate=%%~i
for /f "usebackq delims=" %%i in (`time /t`) do set sTime=%%~i
>>"%date%.txt" <nul set /p sVar=%sDate%%sTime%
if defined sLine (
>>"%date%.txt" echo %sLine%
) else (
>>"%date%.txt" echo.
)
:Outf
setlocal enableextensions enabledelayedexpansion
set sLine1=%~1
::for /f "usebackq delims=" %%i in (`date /t`) do set tDate=%%~i
::for /f "usebackq delims=" %%i in (`time /t`) do set tTime=%%~i
for /f "usebackq delims=" %%i in (`xcopy /y "U:\test1\07.log" "U:\test2"`) do set sCopy=%%~i
>>"%date%.txt" <nul set /p sVar1=%sDate%%sTime% %sCopy%
if defined sLine1 (
>>"%date%.txt" echo %sLine1%
) else (
>>"%date%.txt" echo.
)
endlocal
exit /b
28.11.2017 15:02 run bat
28.11.2017 15:02 Скопировано файлов: 1. run bat
Скопировано файлов: 1.
28.11.2017 15:02 end bat
28.11.2017 15:02 Скопировано файлов: 1. end bat