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

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

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

Аватара для Доктор Ливси

Новый участник


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

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


Помогите, пожалуйста. Нужно следующее: при отсутствии в месяце и дне файла нулей и единиц присвоить переменной md две цифры текущего месяца и две цифры текущего дня

Echo Off && Cls
Setlocal EnableExtensions EnableDelayedExpansion
Echo Сегодня %date%
Echo %date:~3,2% | findstr "01 02 03 04 05 06 07 08 09" > nul
If !ErrorLevel!==1 (Echo %date:~0,2% | findstr "01 02 03 04 05 06 07 08 09" > nul
If !ErorLevel!==1 (Set md=%mdd:~3,2%%mdd:~0,2%)
)
Echo %md%
Endlocal

Ругается, что вывод команд на экран (Echo) отключен. Пытался конструкции, типа %date:~3,2% присваивать переменным и затем производить действия с переменными - та же петрушка

Отправлено: 14:05, 01-02-2012

 

Аватара для ferget

Разный


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

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


могли бы уже освоить тег code

Отправлено: 14:36, 01-02-2012 | #2



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

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


Аватара для Доктор Ливси

Новый участник


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

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


ошибся, только при отсутствии нулей

Отправлено: 15:28, 01-02-2012 | #3


Старожил


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

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


Цитата Доктор Ливси:
при отсутствии нулей »
10, 20, 30 тоже неправильные?
Может, при отсутствии ведущих нулей? Кстати, их может и не быть – зависит от настроек даты


А что такое ErorLevel и mdd ? Повнимательнее нельзя?
Код: Выделить весь код
Echo Off && Cls
Setlocal EnableExtensions EnableDelayedExpansion
Echo Сегодня %date%
Echo %date:~3,2% | findstr "01 02 03 04 05 06 07 08 09" > nul 
If !ErrorLevel!==1 (Echo %date:~0,2% | findstr "01 02 03 04 05 06 07 08 09" > nul 
If !ErrorLevel!==1 (Set md=%date:~3,2%%date:~0,2%)
)
Echo.%md%
Endlocal

Отправлено: 18:34, 01-02-2012 | #4


Аватара для Доктор Ливси

Новый участник


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

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


Да, при отсутствии ведущих нулей
Каюсь, невнимателен. Но результат получился тот же. Отрабатывает
Цитата kiripanda:
Echo Сегодня %date% »
А дальше "Режим вывода команд на экран (Echo) отключен".

Отправлено: 06:53, 02-02-2012 | #5


Аватара для Доктор Ливси

Новый участник


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

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


Попробую Изложить. Допустим, сегодня десятое октоября (т. е. в формате месяц-день будет 1010)
Строкой
Цитата Доктор Ливси:
Echo %date:~3,2% | findstr "01 02 03 04 05 06 07 08 09" > nul »
я узнаю, что месяц, начинается не с нуля (10 - октябрь), а следующей стркой
Цитата Доктор Ливси:
If !ErrorLevel!==1 (Echo %date:~0,2% | findstr "01 02 03 04 05 06 07 08 09" > nul »
что он мне нужен, поэтому смотрю дату что и дата подходит (10 - десятое число)
Поэтому с помощью
Цитата Доктор Ливси:
If !ErrorLevel!==1 (Set md=%date:~3,2%%date:~0,2%) »
хочу записать это в переменную md которая, если я все написал верно, будет равна 1010.
Цитата Доктор Ливси:
Echo %md% »
должно показать 1010.
Уф-ф, надеюсь, что всё понятно

Отправлено: 14:01, 02-02-2012 | #6


Аватара для El Sanchez

Ветеран


Contributor


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

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


Доктор Ливси, проверите в октябре:
Код: Выделить весь код
@Echo Off
SetLocal
If %DATE:~3,2% GEQ 10 If %DATE:~0,2% GEQ 10 Set md=%DATE:~3,2%%DATE:~0,2%&&Call Echo:%md%
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 02-02-2012 | #7


Старожил


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

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


Цитата Доктор Ливси:
результат получился тот же.
...
"Режим вывода команд на экран (Echo) отключен".»
какой у вас формат даты?

Цитата:
Сегодня 11.22.2012
2211

Отправлено: 17:32, 02-02-2012 | #8


Ветеран


Contributor


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

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


Я вместо переменной Date использую Dt - легче отлаживать. Вот моё решение. Опять же, вы не указали какое должно быть md если условия не выполняются. Я забил это значение как xxxx. Опять же, если формат даты другой, например, DD.MM.YYYY, то 0,2 и 3,2 везде взаимно замените.
Код: Выделить весь код
@Echo off

rem Формат даты MM.DD.YYYY

rem Set Dt=%Date%
Set Dt=11.22.2012

Set /A MM=1%Dt:~0,2%-100
Set /A DD=1%Dt:~3,2%-100

Set md=xxxx

If %MM%==%Dt:~0,2% If %DD%==%Dt:~3,2% Set md=%MM%%DD%
Echo %md%

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 02-02-2012 в 17:49.


Отправлено: 17:41, 02-02-2012 | #9


Аватара для root221

Старожил


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

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


Извините за вторжение... я почти в теме.

ПОМОГИТЕ)

Код: Выделить весь код
@echo off
:EOM
SetLocal
Rem _Number=Parameters
Set _1=123456789

Set /P "i=     ‚ўҐ¤ЁвҐ *®¬Ґа Є®¬ЇмовҐа*: "

If Defined _%i% Call Start /b "%i%" ""ift.exe -b Lont"" "%%_%i%%%" > nul
Endlocal
goto EOM

:test
test.vbs > nul
как сделать, что бы можно было вызывать командой test, этот скрипт test.vbs

Пробовал так

Код: Выделить весь код
@echo off
:EOM
SetLocal
Rem _Number=Parameters
Set _1=123456789

Set /P "i=     ‚ўҐ¤ЁвҐ *®¬Ґа Є®¬ЇмовҐа*: "

If Defined _%i% Call Start /b "%i%" ""ift.exe -b Lont"" "%%_%i%%%" > nul
if /i %i%==test goto test
Endlocal
goto EOM

:test
test.vbs > nul
Да вот только есть проблема... Если нажать Enter то пишет что не предвиденное появление goto и консоль закрывается.

А надо что бы она не закрывалась а возвращалась на метку goto :EOM если ничего не ввели или ввели не правильно.

попробовал ещё так

Код: Выделить весь код
@echo off
:eom
SetLocal
Rem _Number=Parameters
Set _19=00196652E984

Set /P "i= Parameters: "

if /i %i%==test goto test
If Defined _%i% Call Start /b "%i%" ""ift.exe -b Lont"" "%%_%i%%%" > nul
Endlocal
goto eom

:test
test.vbs > nul
Endlocal
goto eom
вроде работает как надо, только теперь надо сделать, что бы консоль сама не закрывалась, если нажму enter

Ну если что то не правильно то поправите.

С меня "благодарность")

Отправлено: 17:43, 02-02-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Загрузка - Суть проблемы внутри dock3r Тест-форум 0 09-03-2010 22:51
C/C++ - Задание внутри Wurka86 Программирование и базы данных 1 25-05-2008 22:18
Сортировка внутри папки Evita Хочу все знать 6 24-08-2007 16:07
Локалка внутри локалки alnat2 Сетевые технологии 6 01-09-2006 18:02
Прокся внутри локалки! Dikii Angel Хочу все знать 2 22-01-2004 17:48




 
Переход