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

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

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

Аватара для Nun-Nun

Ветеран


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


Конфигурация

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


В составе батника, сортирующего msi- и exe-файлы по папкам и создающего текст для другого батника, есть конструкция, которая никак не хочет работать. В чём может быть ошибка?
Код: Выделить весь код
If /I "%%~nxf"==".msi" (GOTO :MSI) Else (GOTO :EXE)

:MSI
(Echo !cnt0:~-3! - %%j
Echo Start /D.\!cnt0:~-3!_%%j /wait MSIEXEC /I "%%~nxf" %ParamsMsi%)>>list.cmd
:EXE
(Echo !cnt0:~-3! - %%j
Echo Start /Wait .\!cnt0:~-3!_%%j\%%~nxf %ParamsExe%)>>list.cmd
P.S. На всякий случай немного пояснений относительно некоторых элементов, выполняемых (без ошибок) в другом блоке батника, который здесь не приводится, чтобы не загромождать тему:

1) !cnt0:~-3! - порядковый номер папки (при сквозной нумерации);
2) %%j - имя папки;
3) %%~nxf - имя файла.

Отправлено: 01:26, 18-11-2012

 

Ветеран


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

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


Уберите:
Цитата Nun-Nun:
Код: Выделить весь код
If /I "%%~nxf"==".msi" (GOTO :MSI) Else (GOTO :EXE)
»
У Вас после исполнения метки «:MSI» всегда будет исполняться и метка «:EXE» — Вы в курсе?
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:20, 18-11-2012 | #2



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

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


Аватара для Nun-Nun

Ветеран


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

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


Iska,

Понял. Переделал конструкцию на:
Код: Выделить весь код
(Echo Echo !cnt0:~-3! - %%j)>>list.cmd
If /I "%%~xf"==".exe" (Echo Start /Wait .\!cnt0:~-3!_%%j\%%~nxf %ParamsExe%)>>list.cmd Else (Echo Start /D.\!cnt0:~-3!_%%j /wait MSIEXEC /I "%%~nxf" %ParamsMsi%)>>list.cmd
Теперь всё работает! Большое спасибо!

-------
Свобода не означает вседозволенность.


Отправлено: 13:42, 18-11-2012 | #3


Ветеран


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

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


Подскажите, почему не работает код?
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

if not exist ver.txt (
set /p last="введите цифры: "
if "%last%"=="" (echo Enter)
if %last:~0,2% LSS 23 (echo Первые две цифры должны быть не меньше 23)
pause
)
pause
файл ver.txt отсутствует.

Отправлено: 12:08, 28-05-2013 | #4


Ветеран


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

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


Полагаю, речь про:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

if not exist ver.txt (
set /p last="введите цифры: "
if "!last!"=="" (echo Enter)
if !last:~0,2! LSS 23 (echo Первые две цифры должны быть не меньше 23)
pause
)
pause
?

Отправлено: 13:13, 28-05-2013 | #5


Ветеран


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

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


Iska, пробовал, так тоже не работает. Нет паузы.

Отправлено: 13:32, 28-05-2013 | #6


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

:BOF
  if not exist ver.txt (
   set /p last="ўўҐ¤ЁвҐ жЁдал: "
)
  if not defined last (
   echo Enter
   goto BOF
) else (
   if "%last:~0,2%" LSS "23" (
    echo ЏҐаўлҐ ¤ўҐ жЁдал ¤®«¦*л Ўлвм *Ґ ¬Ґ*миҐ 23
    goto BOF
 ) else (
    goto pause
))
:pause
pause
P.S. Теги форума "скушали" некоторые символы кодировки, заменив их на "*", но, думаю, Вы сами перекодируете, как нужно.

Последний раз редактировалось Georgio, 28-05-2013 в 14:21. Причина: добавление примечания

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 28-05-2013 | #7


Ветеран


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

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


Цитата sov44:
Iska, пробовал, так тоже не работает. Нет паузы. »
Тогда напишите, как должно работать.

Отправлено: 15:36, 28-05-2013 | #8


Ветеран


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

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


Цитата Iska:
напишите, как должно работать. »
немного поправил код Georgio, в итоге получилось, работает
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
:1
set last=
if not exist ver1.txt (set /p last="введите цифры: ")
if not defined last (echo Enter& goto 2)
if defined last (if %last:~0,2% LSS 23 (echo Первые две цифры должны быть не меньше 23& pause>nul& cls& goto 1))
:2
echo теперь верно^^!
pause
Однако не решен вопрос, как убрать слово Enter при наличие файла ver1.txt
Наверное нужен другой вариант, без defined

Отправлено: 16:27, 28-05-2013 | #9


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
:1
set last=
if not exist ver1.txt (set /p last="введите цифры: ") else (goto 2)
if not defined last (echo Enter& pause>nul& cls& goto 1)
if defined last (if %last:~0,2% LSS 23 (echo Первые две цифры должны быть не меньше 23& pause>nul& cls& goto 1))
echo теперь верно^^!
:2
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:05, 28-05-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как заставить работать программу? aerosmit Хочу все знать 3 22-04-2009 17:22
Как заставить работать proc_open () Igor_I Вебмастеру 8 29-10-2006 16:42
Как заставить работать программу в ХР из под MS-DOS Guest Microsoft Windows 2000/XP 7 29-09-2004 08:11
Как заставить работать sfc.exe? Can Microsoft Windows NT/2000/2003 7 09-02-2003 04:26
Как заставить работать?.. Guest Хочу все знать 1 03-09-2002 10:34




 
Переход