CMD/BAT - Необходимо переключать значение маркера в цыкле

Ответить
Аватара пользователя
Seroga777

CMD/BAT - Необходимо переключать значение маркера в цыкле

Сообщение Seroga777 »

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

Решил попробовать разбить задачу на некоторые подзадачи. В очередной из них столкнулся с проблемой:





Код:

Код: Выделить всё

 
@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

Re: CMD/BAT - Необходимо переключать значение маркера в цыкле

Сообщение Iska »

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

Re: CMD/BAT - Необходимо переключать значение маркера в цыкле

Сообщение Seroga777 »

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

Re: CMD/BAT - Необходимо переключать значение маркера в цыкле

Сообщение gora »

Цитата Seroga777:



не выходит поставить значение маркера "no"
CMD/BAT - Необходимо переключать значение маркера в цыкле




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

Код:

Код: Выделить всё

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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»