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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Необходимо переключать значение маркера в цыкле (http://forum.oszone.net/showthread.php?t=246140)

Seroga777 03-11-2012 23:57 2018202

Необходимо переключать значение маркера в цыкле
 
Мне нужно, что бы я при запросе вводил расширения файла, после чего производил с файлами этих форматов некоторые манипуляции.
Решил попробовать разбить задачу на некоторые подзадачи. В очередной из них столкнулся с проблемой:

Код:


@echo off
setlocal
for /L %%k in (1,1,3) do set rMark%%k=yes
for /L %%r in (1,1,3) do echo Введи расширение & set /p rash%%r=
for /L %%f in (1,1,3) do if -rash%%f EQU - (set rMark%%f=no)
echo %rMark1%
echo %rMark2%
echo %rMark3%
endlocal

Задаю маркерам rMark начальное значение yes, потом ввожу расширения. Если расширение не введено, нужно использовать лишь введенные, по этому при пустых строках хочу задать значение маркера rMark no, но оно не меняется... Помогите пожалуйста, BAT учу только неделю, еще совсем новичок
По идее проблема в выделенной строке, но что не правильно не знаю

Iska 04-11-2012 00:38 2018231

Seroga777, непонятно, что Вы хотите получить.

Что есть маркеры? Зачем начальное значение? «Если не введено… использовать лишь введённые» — совершенно непонятно.

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set /p sExtensions=Enter extensions:

if defined sExtensions (
        for %%i in (%sExtensions%) do echo %%i
)

endlocal
exit /b 0

Цитата:

Код:

E:\Песочница\0197>0003.cmd
Enter extensions:txt xls doc fmm
txt
xls
doc
fmm



Seroga777 04-11-2012 00:59 2018242

Если при запросе ввести расширение, расширение не введено, то есть введена пустая строка, то с значением такой переменной работать нельзя, и маркер помечает ее как нерабочую. Так вот, не выходит поставить значение маркера "no"

Iska 04-11-2012 02:03 2018274

Цитата:

Цитата Seroga777
Если при запросе … расширение не введено, то есть введена пустая строка, »

Цитата:

Цитата Iska
if defined sExtensions (…) »


gora 04-11-2012 10:28 2018342

Цитата:

Цитата Seroga777
не выходит поставить значение маркера "no" »

Неправильное условие в третьем цикле:
Код:

if -rash%%f EQU - (set rMark%%f=no)
Оно ни когда не будет выполнено, т.к., rash%%f имя переменной, но не ее значение.
Вариант 1:
Код:

for /L %%f in (1,1,3) do if not defined rash%%f set rMark%%f=no
Вариант 2:
Код:

setlocal enabledelayedexpansion
...
for /L %%f in (1,1,3) do if "!rash%%f!"=="" set rMark%%f=no


Seroga777 07-11-2012 23:25 2021176

Благодарю ребят, помогло!


Время: 22:35.

Время: 22:35.
© OSzone.net 2001-