V!RTuE
30-08-2014, 03:00
Помогите разобраться где допустил ошибку. Может даже как-то можно упростить код:
@echo off
setlocal enableextensions enabledelayedexpansion
SET f=%~dp0
SET CONS="%f%CONS.exe"
::Формирование usr в скрытом режиме. При ошибке присваиваем значение ErrorAdmUsr=
%CONS% /adm /usr /yes /norunner+ || SET ErrorAdmUsr=Не удалось сформировать usr-файл по ключу /adm /usr
::Задаем переменной %usrnew% полный путь к самому новому *.usr-файлу, а %usrtime% - время его изменения
if exist "%f%RECEIVE\*.USR" (
for /f "delims=" %%i in ('dir /b /a:-d /o:d "%f%RECEIVE\*.USR"') do set usrnew=%%i
set usrnew=%f%RECEIVE\%usrnew%
for %%i in ("%usrnew%") do set usrtime=%%~ti
) else do (
set usrtime=
)
if %ERRORLEVEL%==0 (goto usrtime) else (goto ErrorAdmUsr)
:usrtime
echo Время формирования usr-файла: %usrtime% >> "%f%body.txt"
:ErrorAdmUsr
echo .......... >> "%f%body.txt"
if "%ErrorAdmUsr%"=="Не удалось сформировать usr-файл по ключу /adm /usr" (
echo %ErrorAdmUsr% >> "%f%body.txt"
set WARNING=[ERROR]
)
Почему-то независимо от наличия *.usr файла присваивает usrtime пустое значение. Надо, чтобы usrtime=времени создания этого файла. А так остальное всё работает. Эта часть кода работает нормально, если не применять конструкцию if exist:
for /f "delims=" %%i in ('dir /b /a:-d /o:d "%f%RECEIVE\*.USR"') do set usrnew=%%i
set usrnew=%f%RECEIVE\%usrnew%
for %%i in ("%usrnew%") do set usrtime=%%~ti
echo Время формирования usr-файла: %usrtime% >> "%f%body.txt"
@echo off
setlocal enableextensions enabledelayedexpansion
SET f=%~dp0
SET CONS="%f%CONS.exe"
::Формирование usr в скрытом режиме. При ошибке присваиваем значение ErrorAdmUsr=
%CONS% /adm /usr /yes /norunner+ || SET ErrorAdmUsr=Не удалось сформировать usr-файл по ключу /adm /usr
::Задаем переменной %usrnew% полный путь к самому новому *.usr-файлу, а %usrtime% - время его изменения
if exist "%f%RECEIVE\*.USR" (
for /f "delims=" %%i in ('dir /b /a:-d /o:d "%f%RECEIVE\*.USR"') do set usrnew=%%i
set usrnew=%f%RECEIVE\%usrnew%
for %%i in ("%usrnew%") do set usrtime=%%~ti
) else do (
set usrtime=
)
if %ERRORLEVEL%==0 (goto usrtime) else (goto ErrorAdmUsr)
:usrtime
echo Время формирования usr-файла: %usrtime% >> "%f%body.txt"
:ErrorAdmUsr
echo .......... >> "%f%body.txt"
if "%ErrorAdmUsr%"=="Не удалось сформировать usr-файл по ключу /adm /usr" (
echo %ErrorAdmUsr% >> "%f%body.txt"
set WARNING=[ERROR]
)
Почему-то независимо от наличия *.usr файла присваивает usrtime пустое значение. Надо, чтобы usrtime=времени создания этого файла. А так остальное всё работает. Эта часть кода работает нормально, если не применять конструкцию if exist:
for /f "delims=" %%i in ('dir /b /a:-d /o:d "%f%RECEIVE\*.USR"') do set usrnew=%%i
set usrnew=%f%RECEIVE\%usrnew%
for %%i in ("%usrnew%") do set usrtime=%%~ti
echo Время формирования usr-файла: %usrtime% >> "%f%body.txt"