Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Не конвертируется системная переменная %SystemRoot% в значение, при выгрузке скриптом (http://forum.oszone.net/showthread.php?t=311670)

8ash8 16-02-2016 17:02 2606757

Не конвертируется системная переменная %SystemRoot% в значение, при выгрузке скриптом
 
Добрый день друзья, выгрузил путь к файлу хост через скрипт и попытался его запустить, но система выдала ошибку "Не удается найти %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 2606779

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 2606784

Вариант 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 2606785

Цитата:

Цитата 8ash8
1) Почему при выгрузки через пакетный файл не происходит конвертации системной переменной %SystemRoot%, как это исправить? »

Потому что в реестре хранится строка, содержащая указанный текст:
Код:

%SystemRoot%\System32\drivers\etc
— c чего вдруг она должна «конвертироваться»?! Переменную окружения «%SystemRoot%», содержащуюся в указанном тексте, можно раскрыть, например, по «call»:
Код:

… DO call set Ins=%%C
Цитата:

Цитата 8ash8
2) Можно ли сразу прописать какой программой следует открыть файл, в данном случае файл hosts блокнотом? »

Укажите вызов Блокнота:
Код:

notepad.exe "%Ins%\hosts"
8ash8, используйте тэг «code».

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

8ash8 17-02-2016 09:44 2606959

Всем большое спасибо за оперативные ответы! :)


Время: 17:23.

Время: 17:23.
© OSzone.net 2001-