Войти

Показать полную графическую версию : [решено] Поиск текста в переменной


Bruce Wayne
26-07-2013, 22:58
Доброе время суток!

Подскажите, пожалуйста, как можно реализовать поиск текста в переменной? Чтобы, например, если переменная %%i содержала слово (не обязательно выделенное пробелами или иными разделительными знаками) Advanced, то открывался бы блокнот? И, если можно, как подобное можно провернуть с несколькими словами? Например, со словами Advanced, Micro, Devices и Inc.?

Заранее спасибо!

Iska
26-07-2013, 23:27
Пример с одним словом:
@echo off
setlocal enableextensions enabledelayedexpansion

set sVar=bla-bla-blaAdvancedbla-bla-bla

if not "%sVar%" equ "%sVar:Advanced=%" (
echo Found
) else (
echo Not found
)

endlocal
exit /b 0


Пример с несколькими словами:
@echo off
setlocal enableextensions enabledelayedexpansion

set sVar=bla-bla-blaInc.bla-bla-bla

set /a bFound = 0

for %%i in (Advanced Micro Devices Inc.) do (
if not "%sVar%" equ "!sVar:%%i=!" (
set /a bFound = 1
)
)

if %bFound% equ 1 (
echo Found
) else (
echo Not found
)

endlocal
exit /b 0

kiripanda
26-07-2013, 23:40
@echo off &setlocal enableextensions
for /f "delims=" %%i in ('type text.txt') do (

echo(%%i|findstr /c:Advanced >nul &&echo(%%i|findstr /c:Micro >nul &&echo(%%i|findstr /c:Devices >nul &&echo(%%i|findstr /c:Inc. >nul &&echo Found

)
pause

Iska
27-07-2013, 00:03
kiripanda, точно, подзабыл. Тогда ещё проще:
@echo off
setlocal enableextensions enabledelayedexpansion

set sVar=bla-bla-blaInc.bla-bla-bla

echo %sVar%| findstr.exe /c:"Advanced" /c:"Micro" /c:"Devices" /c:"Inc." && echo Found || echo Not found


endlocal
exit /b 0

kiripanda
27-07-2013, 00:07
Не, тогда Found будет на любое из слов, а как я понял нужно все слова одновременно:
Advanced AND Micro AND Devices AND Inc.

Iska
27-07-2013, 00:25
Не, тогда Found будет на любое из слов, а как я понял нужно все слова одновременно: »
Ну, а я понял именно что любое.

Одним словом, придёт автор — выберет по вкусу ;).

Bruce Wayne
27-07-2013, 08:24
Iska, kiripanda, спасибо вам огромное! Оба варианта (с реакцией хотя бы на одно из нескольких слов и только на все) великолепны! :up: То что надо! :ok:

Iska
27-07-2013, 14:45
Bruce Wayne, так Вам-то какой был нужен?!

Bruce Wayne
28-07-2013, 07:43
Iska, изначально был нужен Ваш вариант, но впоследствии я понял, что решение kiripanda тоже подойдёт в некоторых случаях. Словом, вы оба угадали :) Извините, что сразу не поставил конкретную задачу... Ещё раз большое спасибо! :oszone:




© OSzone.net 2001-2012