1

Я создавал набор пакетных сценариев для нашей системы автоматической сборки / тестирования, которая работает в разных операционных системах, чтобы установить некоторые условия для разных сред, и заметил, что Windows 8, похоже, обрабатывает аргументы командной строки regedit.exe по-другому, чем Windows XP через 7 ,

Я выполнял команду:

regedit.exe /s relative_path\registry_settings.reg

Это работало правильно, пока мы не добрались до узла Windows 8, после чего он не выдавал никаких ошибок, а двигался, как будто он работал, не внося никаких изменений в реестр. (а потом весь мой набор тестов провалился и напугал меня)

Чтобы заставить Windows 8 работать, мне пришлось использовать абсолютный путь как таковой:

regedit.exe /s \absolute_path\registry_settings.reg

Является ли это преднамеренным изменением от Microsoft или существует вероятность того, что на это влияют параметры среды? Есть ли лучшее решение, чем использование абсолютного пути (который хрупок и потребует большего количества технического обслуживания в будущем)?

1 ответ1

2

В пакетном сценарии вы можете использовать %~dp0 для представления каталога, в котором находится запущенный пакетный сценарий. Так что, если у вас были файлы в следующих местах:

C:\scripts\script.bat
C:\scripts\relative_path\registry_settings.reg

Вы можете написать это в script.bat:

regedit.exe /s "%~dp0relative_path\registry_settings.reg"

и получить все преимущества относительных путей и по-прежнему работать на Windows 8.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .