Alex_Piggy
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Доброе утро, SLasH Странно. Что в XP, что в Висте работает нормально. Искал когда-то метод получить значение реестра независимо от имени. Увидел - у Вас тройной пробел вместо четверного. Спасибо, буду знать что такое бывает. call set "regkey=%%regkey:*_SZ =%%" - убрать из строки все до слов _SZ включительно и четыре пробела после. set "regkey=!regkey: =$!" - заменить четыре пробела на новый знак - разделитель. Тогда попробуйте так: Код: @echo off for /f "delims=" %%i in ('reg query "HKCR\inifile\shell\open\command" /ve ^| findstr "REG_"') do set "regkey=%%i" set "regkey=%regkey:*REG=%" for /f "tokens=1*" %%a in ("%regkey%") do set "regkey=%%b" echo 3 - "%regkey%" | То, что Вы делаете вторым for - у меня "^| findstr "REG_" ". И skip не нужен. Код: set paramOld="" for /f "tokens=1,2,*" %%i in ('reg query "HKCR\inifile\shell\open\command " /ve ^| findstr "REG_"') do if "%%j" == "REG_EXPAND_SZ" set "paramOld=%%k" if defined paramOld echo paramOld=%paramOld% | Но как минимум в Висте это работать не будет, (там имя раздела <параметр по умолчанию> а не <безымянный>) PS. Кстати, endlocal сотрет все значения переменных, измененные после setlocal. Лучше используйте setlocal disabledelayedexpansion |