Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск текста в переменной (http://forum.oszone.net/showthread.php?t=265037)

Bruce Wayne 26-07-2013 22:58 2191341

Поиск текста в переменной
 
Доброе время суток!

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

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

Iska 26-07-2013 23:27 2191359

Пример с одним словом:
Код:

@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 2191368

Код:

@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 2191381

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 2191383

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

Iska 27-07-2013 00:25 2191392

Цитата:

Цитата kiripanda
Не, тогда Found будет на любое из слов, а как я понял нужно все слова одновременно: »

Ну, а я понял именно что любое.

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

Bruce Wayne 27-07-2013 08:24 2191438

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

Iska 27-07-2013 14:45 2191575

Bruce Wayne, так Вам-то какой был нужен?!

Bruce Wayne 28-07-2013 07:43 2191973

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


Время: 23:16.

Время: 23:16.
© OSzone.net 2001-