Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] If внутри If (http://forum.oszone.net/showthread.php?t=226786)

Доктор Ливси 01-02-2012 14:05 1849278

If внутри If
 
Помогите, пожалуйста. Нужно следующее: при отсутствии в месяце и дне файла нулей и единиц присвоить переменной 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% присваивать переменным и затем производить действия с переменными - та же петрушка

ferget 01-02-2012 14:36 1849313

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

Доктор Ливси 01-02-2012 15:28 1849341

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

kiripanda 01-02-2012 18:34 1849484

Цитата:

Цитата Доктор Ливси
при отсутствии нулей »

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


Доктор Ливси 02-02-2012 06:53 1849822

Да, при отсутствии ведущих нулей
Каюсь, невнимателен. Но результат получился тот же. Отрабатывает
Цитата:

Цитата kiripanda
Echo Сегодня %date% »

А дальше "Режим вывода команд на экран (Echo) отключен".

Доктор Ливси 02-02-2012 14:01 1850026

Попробую Изложить. Допустим, сегодня десятое октоября (т. е. в формате месяц-день будет 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.
Уф-ф, надеюсь, что всё понятно :)

El Sanchez 02-02-2012 15:28 1850091

Доктор Ливси, проверите в октябре:
Код:

@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%


kiripanda 02-02-2012 17:32 1850188

Цитата:

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

какой у вас формат даты?

Цитата:

Сегодня 11.22.2012
2211

megaloman 02-02-2012 17:41 1850202

Я вместо переменной 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%


root221 02-02-2012 17:43 1850206

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

ПОМОГИТЕ)

Код:

@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

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

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

megaloman 02-02-2012 18:33 1850243

root221, Если делать как у Вас
Код:

@Echo Off

:eom
Set /P i="i= Parameters: "
If /i "%i%"=="test" GoTo :test

GoTo :eom

:test
test.vbs
GoTo :eom

А если чуть соптимизировать
Код:

@Echo Off

:eom
Set /P i="i= Parameters: "
If /i "%i%"=="test" Call test.vbs & GoTo :eom

GoTo :eom


Доктор Ливси 03-02-2012 06:50 1850580

Спасибо всем участвовавшим, у ми всё работает как надо теперь

sov44 14-05-2012 21:06 1915941

Подскажите, почему не выполняется проверка по второму условию?
Код:

if exist "%ProgramFiles%\WinRAR\WinRAR.exe" (
if not exist "%Windir%\Web\Wallpaper_bk" (
start "Rar" /wait "%ProgramFiles%\WinRAR\WinRAR.exe" a -ep1 "%Windir%\Web\Wallpaper_bk" "%Windir%\Web\Wallpaper\*.*"
)
)


Foreigner 14-05-2012 21:33 1915961

sov44, А винрар точно в %ProgramFiles% ? А то еще бывает %ProgramFiles(x86)%.

sov44 14-05-2012 22:08 1915982

Foreigner, ось Windows XP х 32, %ProgramFiles(x86)% не работает. Скрипт срабатывает как при наличии, так и при отсутствии файла Wallpaper_bk :(

Foreigner 14-05-2012 22:28 1915991

У меня схожее условие отрабатывает правильно.

sov44 14-05-2012 22:45 1915998

Цитата:

Цитата Foreigner
У меня схожее условие отрабатывает правильно. »

а у меня архив всё время пересобирается (((

ferget 14-05-2012 22:49 1916004

Цитата:

Цитата sov44
Скрипт упаковки работает. В папке Wallpaper находится подпапка. Мне не нужно её архивировать, только файлы, поэтому убран крюч -r »

неправильно понял вопрос

проверил скрипт, срабатывает как надо, архив собирается только если нет файла Wallpaper_bk

sov44 14-05-2012 23:07 1916010

Разобрался. Забыл в Wallpaper_bk указать расширение rar.


Время: 21:50.

Время: 21:50.
© OSzone.net 2001-