Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
experces
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 1
1

Не выполняется условие

26.02.2014, 19:28. Просмотров 869. Ответов 3
Метки нет (Все метки)

Добрый вечер форумчане.
Очень нуждаюсь в вашей помощи.

Суть такая: есть ватник который должен проверять в файле совпадение символов и в зависимости от результата давал разные значения.

Bash
1
2
3
4
5
6
7
:s1
set /p s="Please specify path to file: "
if exist "%s%" (goto n1) else (echo File Not Found & echo. & goto s1)
 
:n1
set /p n="Please enter text for searching: "
for /f %%e in ('findstr /i "%n%" %s%') do if "%%e"=="%n%" (echo good) else (echo bad)
В первом условии все работает:
Bash
1
if exist "%s%" (goto n1) else (echo File Not Found & echo. & goto s1)
В случае успеха, переход ко второму условию и в случае неудачи, переход к началу и требование повторить попытку.

Во втором условии:
Bash
1
for /f %%e in ('findstr /i "%n%" %s%') do if "%%e"=="%n%" (echo good) else (echo bad)
В случае успеха, возвращается сообщение good, в случае неудачи условие else попросту не срабатывает.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 19:28
Ответы с готовыми решениями:

Почему не выполняется условие?
В книге написано: if строка1==строка2 команда Я пишу маленькое условие и...

Условие не выполняется, а команда срабатывает
@echo for /f "tokens=*" %%a in ('findstr "BD=May-03-1800" 1.txt') do (...

Условие не выполняется как при наличии, так и при отсутствии заданного файла
Здравствуйте, мне нужно написать программу которая ищет по за донному пути файл...

Не выполняется условие "IF NOT EXIST..."
Есть код, в функции :txt должно выполняться условие если в созданной аргументом...

Строка кода не выполняется
@for /f "usebackq delims=" %%i in ("file.txt") do ( >"%%i" ( echo @echo ...

3
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
26.02.2014, 20:01 2
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

experces, проверяйте присвоение переменной через defined. Примерно так (не проверял)
Bash
1
2
3
4
5
6
7
8
9
10
:s1
set /p s="Please specify path to file: "
if defined s (goto n1) else (echo File Not Found &echo. &goto s1)
 
:n1
set /p n="Please enter text for searching: "
if defined n (
if exist %s% (
find /i "%n%" "%s%" && (echo good) || (echo bad)
))
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
27.02.2014, 03:16 3
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Я бы так написал:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
SetLocal EnableExtensions
 
:s1
set s=
set /p "s=Please specify path to file: "
if not defined s goto s1
if exist "%s%" (goto n1) else (echo File Not Found &echo. &goto s1)
 
:n1
set n=
set /p "n=Please enter text for searching: "
if not defined n goto n1
>NUL find /i "%n%" < "%s%" && (echo good) || (echo bad)
echo.
goto s1
2
@Root
⁞ ★☭ Mad Max ☭★ ⁞
201 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
27.02.2014, 09:40 4
Dragokas,
строки 12 и 13 можно сократить:
Bash
1
2
3
:n1
set n=
set /p "n=Please enter text for searching: " || goto n1
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2014, 09:40

Почему выполняется 2 раза ?
Вопрос, где не дописал ? Почему весь батник выполняется 2 раза ? @echo off...

Не выполняется HTTP запрос
Здравствуйте! Возник вопрос: как сделать HTTP запрос через командную строку....

Не выполняется CMD-файл
Есть файл CMD следующего содержания: set dd=%DATE% set tt=%TIME% set...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru