пакетный файл создает файл журнала с неправильным именем журнала - PullRequest
0 голосов
/ 21 апреля 2020

Пакетный файл создает файл журнала с неправильным именем журнала.

Я работаю на Windows 10

Есть два пакетных файла.

  1. Bat File 1 устанавливает некоторые из этих переменных и вызывает второй пакетный файл. V_FILE_DIR, V_BAT_FILE_DIR, V_FILE_NAME, V_FILE_DAYS_OLD, V_LOG_FILE_NAME.

  2. Bat File 2 принимает переменные окружения, отправленные Bat File 1. и использует их для ищите файлы в каталоге, которые старше N дней. Он создает файл журнала с количеством файлов, которые он собирается удалить, и списком файлов, которые будут удалены. затем он удаляет файлы.

  3. Эти командные файлы отлично работают, когда я выполняю их из 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...