Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


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

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


alpap, Краткость, несомненно, сестра таланта Но если текст будет вида "error password error garbage test text blabla" либо "fast slow error password error" Ваш батник отработает неверно.
Предлагаю длиннее, но с учетом этих имхо возможных случаев. Как и у Вас, батник работает в предположении, что между error и password не более одного пробела
Код: Выделить весь код
@Echo Off
cls

Set "Str=fast slow error password error garbage test text blabla"

Call :Password "%Str%" "error" "Pass"

Echo "%Pass%"
Pause
GoTo :Eof

:Password
	SetLocal
	Set "Dlm=ё"
	Set "Str=a %~1 a" &Set "Teg= %~2 "
	Call Set "Str=%%Str:%Teg%=%Dlm%%%"   
	EndLocal &FOR /F "tokens=2,3 delims=%Dlm%" %%i IN ("%Str%") DO If Not "%%j"=="" (Set "%~3=%%i") Else (Set "%~3=")
GoTo :Eof

В качестве вспомогательного разделителя я здесь указал ё, естественно, можно указать любой допустимый.
Set "Dlm=ё"
Однако, реально я тестировал батник с символом, который на клавиатуре пользователь, не обременённый излишними знаниями, не введёт. Например, символ ASCII с десятичным кодом 177. Я не смог разместить на форуме батник с этим символом (ломается весь текст сообщения), поэтому вынужденно указал ё.
Опять же, имхо выделение пароля - не основная цель в неизвестном нам батнике, поэтому я это оформил в виде процедуры, чтобы не загромождать основной текст кода
Простите, если излагаю известное
Чтобы вставить в текст символ ASCII с определённым десятичным кодом, надо на цифровой клавиатуре, удерживая клавишу Alt, набрать нужный код

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


Последний раз редактировалось megaloman, 08-02-2018 в 22:52.

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

Отправлено: 11:54, 07-02-2018 | #9