Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверка на наличие теста ДО определнного символа

Пользователь


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

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


Изменения
Автор: Darkar25
Дата: 10-09-2017
некоторые из вас уже знают что я на этом форуме задавал вопрос как выводить текст на экран после определенного символа...
Скрытый текст
http://forum.oszone.net/thread-329624.html
так вот...теперь мне нужно сделать тоже самое но наоборот...нужно проверить содержит ли n-ая строка текст...но с одним условием...проверять нужно не всю строку а вплоть до знака =...дальше него проверять не нужно иначе вся система батника ломается...ну...не вся конечно но задуманный алгоритм работает не так как нужно...можно вместо вопроса батнику вписать ответ и он ответит ответом на ответ как бы это странно не звучало...так вот...
батник(зачем он тут нужен не знаю но на остальных сайтах где я раньше спрашивал подобные вопросы просили батник и его предназначение):
p.s.Части батника:
Скрытый текст
start1 -логируемая рабочая часть
start2/21 -нелогируемая рабочая часть
Repeat -поиск ответа в логируемой рабочей части
Repeat1 -поиск ответа в нелогируемой рабочей части
ANF - ошибка о том что ответ не найден на логируемой рабочей части
ANF1 - ошибка о том что ответ не найден на нелогируемой рабочей части
Check1/2 - проверки на повтор и отсутсвие вопроса на логируемой части
Check3/4 - проверки на повтор и отсутсвие вопроса на нелогируемой части
Answer - установка ответа в переменную на логируемой части
Continue - вывод ответа на экран логируемой части
Answer1 - установка ответа в переменную на нелогируемой части
Continue1 - вывод ответа на экран нелогируемой части
Переменные
Атрибуты

Код: Выделить весь код
@Echo Off
set Question=0
set Question1=0
Set Lines=0
For /F "usebackq" %%L In ("123.txt") Do (Set /A Lines+=1)
cls
setlocal enableextensions enabledelayedexpansion
goto start2
:start1
set LOG=BotLOG.log
echo Logging is ON
set /p "Question="
set /a "STR=0"
set /A "Nstrok=0"
set /a "NUM=0"
set /a "NUM2=!Lines!+1"
If "!Question!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	goto start1
	)
:Repeat
set PrevQuest=%Question%
set /a NUM+=1
set /a c=0
for /f "UseBackQ Delims=" %%A IN ("123.txt") do (
  set /a c+=1
  if !c!==%NUM% set "STR=%%A"
)
echo !NUM! !STR! !Lines! !NUM2! >>%LOG%
echo !STR! | >nul findstr.exe /C:!Question! && goto Answer
if "!NUM!"=="!NUM2!" (goto ANF) else goto Repeat
:ANF
cls
echo Answer Not Found
set /a "STR=0"
set /A "Nstrok=0"
set /a "NUM=0"
set /p "Question="
:Check1
if "!Question!"=="!PrevQuest!" (
	cls
	echo I have already answered this question!
	echo I have already answered this question! >>%LOG%
	set /p "Question="
	goto Check1
	) else if "!Question!"=="DeBuG OFF" (goto start21) else If "!Question!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	set /p "Question="
	goto Check2
	) else (
	set PrevQuest=%Question%
	goto Repeat
	)
:Answer
set /A "Nstrok=!NUM!"
Set "FileIn=123.txt"
Set "Delim=="

Set /A n=%Nstrok%-1
FOR /F "usebackq tokens=1,* delims=%Delim%" %%i IN (`MORE +%n% "%FileIn%"`) DO Set "Answer=%%j" &GoTo :Continue
:Continue
cls
Echo !Answer!
Echo !Answer! >>%LOG%
set /a "Question=0"
set /a "STR=0"
set /A "Nstrok=0"
set /a "NUM=0"
set /p "Question="
:Check2
if "!Question!"=="!PrevQuest!" (
	cls
	echo I have already answered this question!
	echo I have already answered this question! >>%LOG%
	set /p "Question="
	goto Check2
	) else if "!Question!"=="DeBuG OFF" (goto start21) else If "!Question!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	set /p "Question="
	goto Check2
	) else (
	set PrevQuest=%Question%
	goto Repeat
	)
endlocal
:start21
echo Logging is OFF
:start2
set /p "Question1="
set /a "STR1=0"
set /A "Nstrok1=0"
set /a "NUM1=0"
set /a "NUM21=!Lines!+1"
If "!Question1!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	goto start2
	)
:Repeat1
set PrevQuest1=%Question1%
set /a NUM1+=1
set /a c=0
for /f "UseBackQ Delims=" %%A IN ("123.txt") do (
  set /a c+=1
  if !c!==%NUM1% set "STR1=%%A"
)
echo !STR1! | >nul findstr.exe /C:!Question1! && goto Answer1
if "!NUM1!"=="!NUM21!" (goto ANF1) else goto Repeat1
:ANF1
cls
echo Answer Not Found
set /a "STR1=0"
set /A "Nstrok1=0"
set /a "NUM1=0"
set /p "Question1="
:Check3
if "!Question1!"=="!PrevQuest1!" (
	cls
	echo I have already answered this question!
	set /p "Question1="
	goto Check3
	) else if "!Question1!"=="DeBuG ON" (goto start1) else If "!Question1!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	set /p "Question1="
	goto Check3
	) else (
	set PrevQuest1=%Question1%
	goto Repeat1
	)
:Answer1
set /A "Nstrok1=!NUM1!"
Set "FileIn1=123.txt"
Set "Delim1=="

Set /A n=%Nstrok1%-1
FOR /F "usebackq tokens=1,* delims=%Delim1%" %%i IN (`MORE +%n% "%FileIn1%"`) DO Set "Answer1=%%j" &GoTo :Continue1
:Continue1
cls
Echo !Answer1!
set /a "Question1=0"
set /a "STR1=0"
set /A "Nstrok1=0"
set /a "NUM1=0"
set /p "Question1="
:Check4
if "!Question1!"=="!PrevQuest1!" (
	cls
	echo I have already answered this question!
	set /p "Question1="
	goto Check4
	) else if "!Question1!"=="DeBuG ON" (goto start1) else If "!Question1!"=="0" (
	cls
	Echo I Cannot read emtpy messages!
	set /p "Question1="
	goto Check4
	) else (
	set PrevQuest1=%Question1%
	goto Repeat1
	)
endlocal
PAUSE>nul
БД:
Скрытый текст
Привет=Приветики
Пока=Досвидания
Проверка=раз Два ТРИ Проверка ответа с пробелами

предназначение батника:попытка написать батник который "Отвечает" на заданные вопросы
думаю вопрос ясен и понятен...сделать скрипт проверяющий определенную строку(переменная NUM=номер строки или STR=сама строка) строку на наличие определенного текста(переменная Question/Question1) до знака =...надеюсь на вашу помощь...

Отправлено: 23:35, 09-09-2017

 

Ветеран


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

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


Darkar25,
погуглите: "Чат на cmd" и одной проблемой (или головной болью) у вас станет меньше.

Отправлено: 05:29, 10-09-2017 | #2



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

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


Ветеран


Contributor


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

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


Darkar25,
Не знаю, что Вы хотите, но вот вариант. Здесь "база" совмещена с батником, но может быть и прописана в отдельный файл. Запускайте, смотрите. Сохранить в 866 кодировке
Код: Выделить весь код
@Echo Off
CLS

Set "FileIn=Z:\Box_In\list.txt"
Set "FileIn=%~dpnx0"
Set "Delim=="

Set "Answ=Скажи что-нибудь!"
:Begin

Set "Quest="
Set /P "Quest=%Answ%  >"

FOR /F "tokens=*" %%s IN ("%Quest%") DO Set "Quest=%%s" 
If "%Quest%"=="" Set "Quest=#"

Set "Answ="
FOR /F "usebackq tokens=1,* delims=%Delim%" %%i IN (`FINDSTR /B /I /C:"%Quest%=" "%FileIn%" 2^>nul`) DO Set "Answ=%%j" 

If "%Answ%"=="" Set "Answ=Я этого не знаю. Скажи что-то внятное."
GoTo :Begin


GoTo :Eof
#=Ничего не сказано. Скажи что-нибудь! 
привет=Здравствуй, моя радость
до свидания=Буду скучать
Тест=Раз, два, три, четыре, пять! Вышел зайчик погулять!
Чтобы работало с отдельным файлом, прописать его в переменной, красное удалить, подчеркнутое перенести в отдельный файл с указанным выше именем.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 10-09-2017 в 21:15.

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

Отправлено: 11:44, 10-09-2017 | #3


Пользователь


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

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


спасибо,megaloman,вы решили мне сразу 2 проблемы:Проблема 1:невозможность писать пробелы в вопросах
Проблема 2:при вписывании вопроса можно написать ответ и он ответит ответом на ответ...отмечаю решенными обе темы...

Отправлено: 17:11, 13-09-2017 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проверка на наличие интернета Qweezy AutoIt 1 14-06-2017 13:37
Проверка компа на наличие Бяки Tropikusik Лечение систем от вредоносных программ 2 24-07-2014 22:31
CMD/BAT - Проверка на наличие папок в директории feAre Скриптовые языки администрирования Windows 17 19-11-2013 17:31
CMD/BAT - Проверка на наличие процесса tazik9 Скриптовые языки администрирования Windows 0 23-01-2011 16:56
VBS/WSH/JS - [решено] Проверка на наличие файлй peretc001 Скриптовые языки администрирования Windows 2 20-01-2011 16:00




 
Переход