Компьютерный форум 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=244752)

TeMochkiN 15-10-2012 21:54 2006087

Получить подстроку
 
Получаю я значение из реестра, которое скажем выглядит так:
Код:

пквнвкы "рвнгва123" рпврп32
как можно выдрать то, что в кавычках? рвнгва123

TeMochkiN 15-10-2012 21:56 2006093

надо ведь кавычки как то в качестве разделителей использовать, только я не знаю как правильно это написать

TeMochkiN 15-10-2012 22:23 2006114

можно вообще где-нибудь почитать по-подробнее про for со всякими ключами типа /f "tokens=* delims="

Iska 15-10-2012 22:44 2006133

Цитата:

Цитата TeMochkiN
можно вообще где-нибудь почитать по-подробнее про for со всякими ключами типа /f "tokens=* delims=" »

Windows XP:
Код:

hh.exe mk:@MSITStore:C:\WINDOWS\Help\ntcmds.chm::/for.htm
Windows 2003 и выше — сначала:
Код:

start "" "http://www.microsoft.com/en-us/download/details.aspx?id=2632"
после загрузки и помещения «CommandReference.chm», например, в «C:\WINDOWS\Help»:
Код:

hh.exe "ms-its:C:\WINDOWS\Help\CommandReference.chm::/html/e275726c-035f-4a74-8062-013c37f5ded1.htm"
Также:
For - Looping commands | SS64.com и все ссылки в низу страницы под заголовком «Related:».

Batch files - The FOR command: Windows NT 4/Windows 2000 Syntax
Batch Files - Variable Expansion in FOR Loops
NT's FOR /F command: tokens and delims

TSCMD010 FAQ: How can I change the environment variable values within a FOR loop? Assorted NT/2000/XP/.. CMD.EXE script tricks written by Timo Salmi
TSCMD072 FAQ: Is it possible to use quotes as delims in for loops? Assorted NT/2000/XP/.. CMD.EXE script tricks written by Timo Salmi
TSCMD095 FAQ: How to perform an operation on all the filenames listed in a file? Assorted NT/2000/XP/.. CMD.EXE script tricks written by Timo Salmi

TeMochkiN 15-10-2012 22:48 2006138

Iska, спасибо! буду читать! :)

Цитата:

Цитата Iska
Windows 2003 и выше — сначала:
Код:
start "" "http://www.microsoft.com/en-us/download/details.aspx?id=2632"
после загрузки и помещения «CommandReference.chm», например, в «C:\WINDOWS\Help»:
Код:
hh.exe "ms-its:C:\WINDOWS\Help\CommandReference.chm::/html/e275726c-035f-4a74-8062-013c37f5ded1 »

Win 7 x64 пишет :dont-know
Код:

Переход на веб-страницу отменен
 
  Попробуйте сделать следующее:
    Повторите ввод адреса

и так происходит даже просто при открытии файла и кликании на любом пункте в содержании
буду читать остальные ссылки

Iska 16-10-2012 02:39 2006219

TeMochkiN, разблокируйте загруженный файл: Как разблокировать CHM-файлы в Windows 7 | Software | Blog. Just Blog.

gora 16-10-2012 06:52 2006236

Цитата:

Цитата TeMochkiN
как можно выдрать то, что в кавычках? »

Код:

@Echo Off
Set TXT=пквнвкы "рвнгва123" рпврп32

For %%i In (%TXT%) Do If Not %%i==%%~i Echo %%~i
Pause>Nul


TeMochkiN 16-10-2012 11:37 2006360

Цитата:

Цитата Iska
разблокируйте загруженный файл »

спасибо! сразу не додумался до этого))

gora, работает! :) но у меня небольшая заминка есть, у меня двойные кавычки встречаются 4 раза в тексте: пквнвкы "рвнгва123" рпврп32 "траляля"
поэтому выводится рвнгва123 и траляля))) как вывести только рвнгва123? :)
просто вот что я пытаюсь сделать:
Код:

For /F "Tokens=*" %%I In ('REG QUERY "<ВеткаРеестра>" /ve') Do Set abc=%%I
::после этого abc = (по умолчанию)    REG_SZ    "<Путь>" "<Параметр>" и я пробую следующее:
For /F "Tokens=1" %%i In (%abc%) Do If Not %%i==%%~i Echo %%~i

видимо это неправильно, т.к. пишет ошибку Непредвиденное появление: REG_SZ.)))
мне надо получить только <Путь>

gora 16-10-2012 12:00 2006382

TeMochkiN, экспортируйте конкретную ветку реестра (а не "траляля") в формате .reg , которую Вам нужно обработать, и выложите ее здесь. Укажите в ней, что конкретно нужно получить из нее.

TeMochkiN 16-10-2012 12:06 2006386

gora, ну у вас же просто может не быть этой ветки в реестре, если только вы не используюете 1с)))
Ветка:
HKCR\Applications\1cestart.exe\shell\open\command
Ключ:
(по умолчанию) REG_SZ "C:\Program Files (x86)\1cv82\common\1cestart.exe" /RunShortcut "%1"'

надо получить путь C:\Program Files (x86)\1cv82\common\1cestart.exe

gora 16-10-2012 12:12 2006392

Цитата:

Цитата TeMochkiN
ну у вас же просто может не быть этой ветки в реестре »

У меня ее и нет, поэтому я просил
Цитата:

Цитата gora
экспортируйте конкретную ветку реестра (а не "траляля") в формате .reg »

Вот так:
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Applications\7zFM.exe\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""


TeMochkiN 16-10-2012 12:15 2006395

Вложений: 1
Простите, я невнимательно прочел)
так как можно только путь получить?

vserd 16-10-2012 13:26 2006443

Цитата:

Цитата TeMochkiN
For /F "Tokens=1" %%i In (%abc%) »

For /F "Tokens=1" %%i In ("%abc%") ...
выполните в консоле команду help for
читать вдумчиво и неспешно, for достаточно мощьная команда, но не всегда очевидная, а когда заходит речь о кавычках, запятых, пробелах и слешах то очень легко сделать ошибку.

Если вы получили строку в переменную, тогда мучайте for отельно, reg вам уже не нужен.
Я бы сразу Tokens=3* поставил
Echo %%i
echo %%j
вам помогут в отладке.

gora 16-10-2012 14:07 2006464

Код:

@Echo Off
Set sKey=HKCR\Applications\1cestart.exe\shell\open\command
For /f "tokens=4-6" %%i In ('Reg Query "%sKey%" ^| FindStr /I /C:"REG_SZ"') Do For %%a In (%%i %%j %%k) Do Echo %%~a
Pause>Nul



Время: 19:12.

Время: 19:12.
© OSzone.net 2001-