Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Обработка условий (IF)

Ответить
Настройки темы
CMD/BAT - [решено] Обработка условий (IF)

Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Помогите разобраться где допустил ошибку. Может даже как-то можно упростить код:
Код: Выделить весь код
@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"

Отправлено: 03:00, 30-08-2014

 

Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Вроде с задачей справился своими силами. Может еще как-то оптимизировать? или и так сойдет?
Код: Выделить весь код
@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% - время его изменения
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

if %ERRORLEVEL%==0 (goto usr+) else (goto usr-)

:usr+
echo Время формирования usr-файла: %usrtime% >> "%f%body.txt"
goto usr++

:usr-
set usrtime=
echo .......... >> "%f%body.txt"
echo %ErrorAdmUsr% >> "%f%body.txt"
set WARNING=[ERROR]
goto usr--

:usr++
echo .......... >> "%f%body.txt"
:usr--
Использовал метки goto, т.к. в итоге батник должен записывать в определенной последовательности результат работы и ошибки в файл, а этот файл уже будет использоваться как тело письма, отправляемое на почту.

P.S.: Только сейчас придумал, что лучше было бы записывать в разные файлы отдельно результаты работы и отдельно ошибки, а после файлы объединить. Чтобы в итоге в письме было красиво всё написано.

P.P.S.: А еще лучше использовать переменные с помощью команды set и уже в конце сформировать файл, расположив все переменные в нужной мне последовательности (может быть до 20 переменных)

Последний раз редактировалось V!RTuE, 30-08-2014 в 07:06.


Отправлено: 05:44, 30-08-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Обработка условий (IF)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт с проверкой условий wiznv Скриптовые языки администрирования Windows 6 30-07-2014 07:26
VBS/WSH/JS - Завершение условий Тишина Программирование и базы данных 2 11-04-2014 16:23
[решено] Несколько условий в переменной $re2 KrotMen Вебмастеру 2 08-07-2012 15:16
Использование - Изменение условий лицензирования Windows PE okshef Лицензирование продуктов Microsoft 0 23-03-2012 08:29
Firewall несколько условий для порта Welcome Microsoft Windows NT/2000/2003 0 14-06-2011 04:07




 
Переход