PDA

Показать полную графическую версию : [решено] Не конвертируется системная переменная %SystemRoot% в значение, при выгрузке скриптом


8ash8
16-02-2016, 17:02
Добрый день друзья, выгрузил путь к файлу хост через скрипт и попытался его запустить, но система выдала ошибку "Не удается найти %SystemRoot%\System32\drivers\etc\hosts" соответственно запуск не идет. Если же просто запустит через cmd "start %SystemRoot%\System32\drivers\etc\hosts" то %SystemRoot% преобразуется через системную переменную и запуск производится (запуск выбора программы, которой нужно произвести открытие файла).

For /F "usebackq tokens=1,2* skip=2" %%A IN (`Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /V DataBasePath`) DO set Ins=%%C
start %Ins%\hosts


поэтому у меня 2 вопроса:
1) Почему при выгрузки через пакетный файл не происходит конвертации системной переменной %SystemRoot%, как это исправить?
2) Можно ли сразу прописать какой программой следует открыть файл, в данном случае файл hosts блокнотом?

Foreigner
16-02-2016, 17:47
8ash8, Ну так сразу обозначьте "tokens=3" и "Ins=%%A", "skip" можно не задействовать, как и "usebackq" (но замените в этом случае кавычки):

for /f "tokens=3" %%A in ('Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /V DataBasePath') do set "Ins=%%A"

Georgio
16-02-2016, 18:06
Вариант 1:

For /F "usebackq tokens=1,2* skip=2" %%A IN (`Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /V DataBasePath`) DO call set Ins=%%C
start %Ins%\hosts

.


Вариант 2:

For /F "usebackq tokens=1,2* skip=2" %%A IN (`Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /V DataBasePath`) DO set Ins=%%C
call start %Ins%\hosts

.

Iska
16-02-2016, 18:10
1) Почему при выгрузки через пакетный файл не происходит конвертации системной переменной %SystemRoot%, как это исправить? »
Потому что в реестре хранится строка, содержащая указанный текст:
%SystemRoot%\System32\drivers\etc
— c чего вдруг она должна «конвертироваться»?! Переменную окружения «%SystemRoot%», содержащуюся в указанном тексте, можно раскрыть, например, по «call»:
… DO call set Ins=%%C

2) Можно ли сразу прописать какой программой следует открыть файл, в данном случае файл hosts блокнотом? »
Укажите вызов Блокнота:
notepad.exe "%Ins%\hosts"

8ash8, используйте тэг «code».

Коллега Georgio опередил :).

8ash8
17-02-2016, 09:44
Всем большое спасибо за оперативные ответы! :)




© OSzone.net 2001-2012