![]() |
Без раскрытия системной переменной окружения
Здравствуйте. Есть текстовый reg-файл, со сточками, содержащими системные переменные, например:
@="\"%ProgramFiles%\\FastStone Image Viewer\\FSViewer.exe\" \"%1\"" Нужно заменить %ProgramFiles% на %ProgramFiles(x86)%. При замене с использованием батника, системные переменные раскрываются и получается: @="\"C:\Program Files(x86)\\FastStone Image Viewer\\FSViewer.exe\" \"\"" А надо: @="\"%ProgramFiles(x86)%\\FastStone Image Viewer\\FSViewer.exe\" \"%1\"" Батник, найденный в просторах Интернета, такой: for /f "tokens=*" %%a in ('more^<reg.reg') do call :_replace "%%a" goto eof :_replace set i=%* set i=%i:Program Files=Program Files(x86)% echo %i%>>new.txt goto eof :eof |
Код:
> reg add "hkcu\test" /v test /d "\"^%ProgramFiles(x86)^%\"" /f |
Тогда как будет выглядеть батник, получающий исходный (большой) reg-файл содержащий системные переменные и выдающий другой reg-файл, в котором конкретные системный переменные или другой текст заменен на другие системные переменные или текст?
|
Именно батник? В чистом виде он не слишком приспособлен для обработки текста. С помощью sed:
Код:
@echo off |
Вообще, разрешено использовать только средства Windows, отдавая предпочтение батникам. Видимо, придется обратиться к JavaScript, если не смогу обойтись батником.
|
Так работает:
Код:
@echo off |
Вот что выводит в new.txt:
Код:
D:\System\Flash\Utils\!!! - Copy\FastStone Image Viewer 4.9\Data>( |
Не надо пренебрегать командой
Код:
@echo off |
C echo off выводил это:
Код:
ю@ Вот здесь он запоминает неправильное значение числа строк: Код:
for /f %%i in ('find /c /v ""^<"reg.reg"') do set n=%%i Набираю в командной строке Код:
find /c /v "^<" reg.reg Код:
---------- REG.REG: 2 |
Итить!! Верхний пост невнимательно прочитал! Действительно, был в Unicode. Теперь выводит.
Вот эту строчку не смог понять: Код:
)<"reg.reg">"new.txt" |
Кстати, команды
Код:
chcp 1251>nul&& type reg.reg>reg_ANSI.reg Код:
chcp 1251>nul&& more<reg.reg>reg_ANSI.reg |
Спасибо! Сам точно не додумался бы!
|
Время: 11:05. |
Время: 11:05.
© OSzone.net 2001-