Занесение значения переменной из .BAT в файл txt
В общем задача такая, что при выполнении батника, действия должны заноситься в файл log.txt. Туда попадает дата, точное время и выполненная команда. Время и дата прекрасно заносятся, а команда нет. Не знаю что делать.
@echo off
setlocal enabledelayedexpansion
REM Переменная для хранения времени
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "datetime=%%I"
set "dateStamp=!datetime:~6,2!.!datetime:~4,2!.!datetime:~0,4!"
set "timeStamp=!datetime:~8,2!:!datetime:~10,2!:!datetime:~12,2!"
REM Переход в папку upload
cd C:\upload
REM Установка пути для файла log.txt в корень диска C:
set "logFile=C:\log.txt"
REM Создание пустого файла log.txt, если его нет
if not exist "%logFile%" type nul > "%logFile%"
REM Рекурсивный обход всех папок и файлов внутри папки upload
for /r %%F in (*) do (
if "%%~xF"==".csv" (
set "CURRENT_FILE=%%~nxF"
set "CURRENT_FOLDER=%%~dpF"
echo Processing file: !CURRENT_FOLDER!!CURRENT_FILE!
REM Составление строки с использованием текущего файла
set "COMMAND=curl --max-time 300 --header "Content-Type: text/csv" --data-binary @"!CURRENT_FOLDER!!CURRENT_FILE!" http://172.26.7.21:8900/v2/datamarts/eduejd26/tables/!CURRENT_FOLDER:~10!!CURRENT_FILE!/upload"
REM Вывод сформированной команды
echo !COMMAND!
REM Выполнение команды и запись в лог
(call !COMMAND! 2>&1) | (
findstr /i "requestID" > "%temp%\temp_log.txt"
echo %dateStamp% %timeStamp% %COMMAND% >> "%logFile%"
type "%temp%\temp_log.txt" >> "%logFile%"
)
REM Если команда завершилась успешно, добавляем .csv.old к текущему файлу
if !ERRORLEVEL! EQU 0 (
ren "!CURRENT_FOLDER!!CURRENT_FILE!" "%%~nF.csv.old"
echo Renamed to: !CURRENT_FILE!.csv.old
) else (
echo Error occurred, file not renamed.
)
)
)
echo All files processed.
cmd.exe
Интересующее нас место, это
(call !COMMAND! 2>&1) | (
findstr /i "requestID" > "%temp%\temp_log.txt"
echo %dateStamp% %timeStamp% %COMMAND% >> "%logFile%"
type "%temp%\temp_log.txt" >> "%logFile%"
)