Пакетный файл создает файл журнала с неправильным именем журнала.
Я работаю на Windows 10
Есть два пакетных файла.
Bat File 1 устанавливает некоторые из этих переменных и вызывает второй пакетный файл. V_FILE_DIR
, V_BAT_FILE_DIR
, V_FILE_NAME
, V_FILE_DAYS_OLD
, V_LOG_FILE_NAME
.
Bat File 2 принимает переменные окружения, отправленные Bat File 1. и использует их для ищите файлы в каталоге, которые старше N дней. Он создает файл журнала с количеством файлов, которые он собирается удалить, и списком файлов, которые будут удалены. затем он удаляет файлы.
Эти командные файлы отлично работают, когда я выполняю их из Windows Explorer. Когда они выполняются планировщиком Windows, они удаляют файлы, но файлу журнала присваивается неправильное имя журнала, а удаленный файл не отображается в файле журнала.
: ---- remove_MVIEW_SERVICE_BI_PART_MASTER_old_files.bat
: Bat file #1
@set V_FILE_DIR="C:\Users\khughes\Desktop\KCH_WAKA-PDMDB-V01_WINDCHILL_PROD\Oracle\0BAT\MVIEW_SERVICE_BI_PART_MASTER"
@set V_BAT_FILE_DIR="C:\Users\khughes\Desktop\KCH_WAKA-PDMDB-V01_WINDCHILL_PROD\Oracle\0BAT\REMOVE_OLD_FILES"
@SET V_FILE_NAME="*.LOG"
@SET V_FILE_DAYS_OLD=14
@SET V_LOG_FILE_NAME=MVW_SRVCE_BI_PRT_MSTR
call %V_BAT_FILE_DIR%\remove_old_files.bat %V_FILE_DIR% %V_BAT_FILE_DIR% %V_FILE_NAME% %V_FILE_DAYS_OLD% %V_LOG_FILE_NAME%
: Bat file #2
@IF [%1]==[] goto NOPARM
:---> Set variables section
@set V_FILE_DIR=%1%
@set V_BAT_FILE_DIR=%2%
@SET V_FILE_NAME=%3%
@SET V_FILE_DAYS_OLD=%4%
@SET V_LOG_FILE_NAME=%5%
@set V_HOUR=%time:~0,2%
@if "%V_HOUR:~0,1%" == " " set hour=0%V_HOUR:~1,1%
:echo hour=%V_HOUR%
@set V_MIN=%time:~3,2%
@if "%V_MIN:~0,1%" == " " set min=0%V_MIN:~1,1%
:echo min=%V_MIN%
@set V_SECS=%time:~6,2%
@if "%V_MIN:~0,1%" == " " set secs=0%V_MIN:~1,1%
:echo V_SECS=%V_MIN%
@set V_MONTH=%date:~-10,2%_%date:~-7,2%_%date:~-4,4%
@set V_YEAR=%date:~-4%
@set V_DATE_TIME=%V_MONTH%__%V_HOUR%_%V_MIN%_%V_SECS%
:---> Code section
@echo off
set "File=tmpfile"
set /a count=0
SETLOCAL enabledelayedexpansion
forfiles /p %V_FILE_DIR% /m %V_FILE_NAME% -d -%V_FILE_DAYS_OLD% /c "cmd /c echo The extension of @file is 0x09@ext") >> tmpfile
for /F "tokens=* delims=" %%a in ('Type "%File%"') do (
Set /a count+=1
Set "output[!count!]=%%a" )
IF %count% EQU 0 (Echo No files found to delete) ELSE (Echo %count% files were found to delete)
set V_NEWFILENAME=%V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
echo "--->*******************************************" >> %V_NEWFILENAME%
echo "--->* %count% files deleted on %V_DATE_TIME% *" >> %V_NEWFILENAME%
echo "--->*******************************************" >> %V_NEWFILENAME%
forfiles -p %V_FILE_DIR% -m %V_FILE_NAME% -d -%V_FILE_DAYS_OLD% -c "cmd /c echo del @path" >> %V_NEWFILENAME%
forfiles -p %V_FILE_DIR% -m %V_FILE_NAME% -d -%V_FILE_DAYS_OLD% -c "cmd /c del @path"
del %V_BAT_FILE_DIR%\tmpfile
goto exit1
:NOPARM
echo '******* Parameter Value Missing *******' >> V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
:exit1
echo . >> %V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
echo '***********************' >> %V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
echo '******* Exiting *******' >> %V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
echo '***********************' >> %V_BAT_FILE_DIR%\remove_%V_LOG_FILE_NAME%_%V_DATE_TIME%.log
EXIT /b