Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не работает сравнение строк в bat-файле / 19 сообщений из 19, страница 1 из 1
27.08.2012, 06:16
    #37931123
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
Суть в том, что бегая по файлам в каталоге хочу сравнить их имена со строкой и найти нужный. Код такой
for %%f in (%dir%\!d!\*.dat) do (

set w=%%f
set e=!w:~15,-4!

if !e!=="income" (
echo "income1"
) else if !e!=="expense" (
echo "expense1"
) else echo !e!

)Т.е. в каталоге есть файл с именем "income", значит в результате на екран должно вывестись "income1" и т.д. Но это сравнение почему то не работает и всегда выводится результат else, т.е. "income".
Помогите пожалуйста с проблемой.
Заранее спасибо.
...
Рейтинг: 0 / 0
27.08.2012, 09:20
    #37931200
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
echo !e!
...
Рейтинг: 0 / 0
27.08.2012, 11:02
    #37931352
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
А что мешает забодяжить простое:
Код: sql
1.
for %A in (строка*) do echo %A

?
...
Рейтинг: 0 / 0
27.08.2012, 11:40
    #37931431
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
Basil A. Sidorov,

Не, ну это не соответствует условиям задачи) Я привел только часть кода, с найденными файлами я работаю. Поэтому мне надо найти пройтись по ВСЕМ файлам в каталоге, и при этом специфически обработать файл "income". Поэтому я и сравниваю имя файла со строкой.
...
Рейтинг: 0 / 0
27.08.2012, 12:43
    #37931584
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
Вот и поставь эхо, чтобы видеть, что же на самом деле там в переменной вместо ожидаемого income
...
Рейтинг: 0 / 0
27.08.2012, 12:44
    #37931587
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
Akina,

Так стоит уже в ветке else. И выводит все имена файлов по порядку, в том числе там есть и "income".
...
Рейтинг: 0 / 0
27.08.2012, 13:50
    #37931735
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoykПоэтому мне надо найти пройтись по ВСЕМ файлам в каталоге, и при этом специфически обработать файл "income". Поэтому я и сравниваю имя файла со строкой.Ну и в чём проблема:
Код: sql
1.
for %A in (income*) do что-надо&for %B in (*) do if not "%B" == "%A" что-ещё-надо

?
...
Рейтинг: 0 / 0
27.08.2012, 14:02
    #37931773
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
Basil A. SidorovНу и в чём проблема:Пардон, логический прокол.
...
Рейтинг: 0 / 0
27.08.2012, 14:10
    #37931791
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoyk, вы учитываете, что сравнение строк чуствительно к регистру? 'income' != 'Income'
...
Рейтинг: 0 / 0
27.08.2012, 14:14
    #37931798
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
?smoyk, вы учитываете, что сравнение строк чуствительно к регистру? 'income' != 'Income'
Код: sql
1.
2.
3.
4.
if /?
...
IF [/I] строка1 оператор_сравнения строка2 команда
...
...
Рейтинг: 0 / 0
27.08.2012, 14:39
    #37931871
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
?,

Все в нижнем регистре. Ключь /I соответственно не помог.

Basil A. Sidorov,

Ну вы другое решение предложили этого вопроса, может и стоить его конешно попробовать, но кто поручится, что "%B" == "%A" будет работать, если не работает !e!=="income"? Надо разобраться как нить, в чем причина... я думал мож какую мелочь не учел (ну типа регистра). Если не будет больше идей, куда смотреть, попробую.
...
Рейтинг: 0 / 0
27.08.2012, 16:02
    #37932050
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoykСуть в том, что бегая по файлам в каталоге хочу сравнить их имена со строкой и найти нужный. Код такой
for %%f in (%dir%\!d!\*.dat) do (

set w=%%f
set e=!w:~15,-4!

if !e!=="income" (
echo "income1"
) else if !e!=="expense" (
echo "expense1"
) else echo !e!

)Т.е. в каталоге есть файл с именем "income", значит в результате на екран должно вывестись "income1" и т.д. Но это сравнение почему то не работает и всегда выводится результат else, т.е. "income".
Помогите пожалуйста с проблемой.
Заранее спасибо.

Когда запускаете cmd, ключ /V:ON указываете?
...
Рейтинг: 0 / 0
27.08.2012, 16:13
    #37932077
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoykНу вы другое решение предложили этого вопроса, может и стоить его конешно попробовать, но кто поручится, что "%B" == "%A" будет работать, если не работает !e!=="income"?Моё решение гарантировано будет работать, т.к. не зависит от "досрочного развёртывания" переменных.
Но это - решение другой задачи, если я правильно понял вашу.
...
Рейтинг: 0 / 0
27.08.2012, 17:21
    #37932255
pirovindos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
А почему вы решили, что e=!w:~15,-4! выделит имя файла?
Расширение в конце строки отсечено правильно, а в начале строго 15 символов?
...
Рейтинг: 0 / 0
27.08.2012, 17:29
    #37932282
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
else echo *!e!*
...
Рейтинг: 0 / 0
27.08.2012, 17:51
    #37932332
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
А вообще, чтобы не извращаться, лучше "использовать подпрограммы":
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@echo off
setlocal
pushd
...
call :sub1 аргументы
goto end
...
call :sub2 другие аргументы
goto end

:sub1
первая подпрограмма
goto end

:sub2
вторая подпрограмма
goto end

:end
popd
endlocal
...
Рейтинг: 0 / 0
27.08.2012, 20:51
    #37932547
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoyk, помедетируй вот над этим:
Код: sql
1.
2.
3.
4.
5.
6.
@echo off
set a=abcd
if !a!==!abcd! echo 1
if !a!=="abcd" echo 2
if %a%==abcd echo 3
if "%a%"=="abcd" echo 4
...
Рейтинг: 0 / 0
28.08.2012, 05:50
    #37932780
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
x1ca4064,

Да.

Basil A. Sidorov,

Я понимаю, что решений у задачи может быть много, но самое простое все таки через условный оператор)

White Owl,

Спасибо большое, я достиг просветления!)

Всем спасибо, кто откликнулся и помогал советами.
...
Рейтинг: 0 / 0
12.12.2012, 20:58
    #38076608
enjsib
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает сравнение строк в bat-файле
smoyk мог и поделиться в чем была проблема. я думаю, что при сравнении if !e! == "income", двойные кавычки были лишними, т.к. упоминается, что income это имя файла, а содержать двойных кавычек оно явно не может.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не работает сравнение строк в bat-файле / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]