REG ADD игнорирует / f

2016
Kevin Jones

Мой сценарий:

@ECHO OFF  SET RegPath="HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\"  REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v LastKey /t REG_SZ /d "%RegPath%" /f  START RegEdit 

Несмотря на включение /f, мне всегда предлагается заменить запись. Как я могу получить команду REG ADD, чтобы не запрашивать и просто заменить запись?

3
Попробуйте использовать `reg import`. harrymc 7 лет назад 0

1 ответ на вопрос

4
Ƭᴇcʜιᴇ007

Если вы запустите его как есть, вы увидите, что значение, добавленное в реестр, на самом деле HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0" /f- включая потерянную кавычку и значение, /fкоторое было задано в качестве отдельного аргумента.

Проблема здесь в том, что вы добавляете слишком много кавычек через саму переменную, не говоря уже о вызове переменной, и, как таковой, это сбивает с толку то, Regгде аргументы начинаются и заканчиваются.

Удалите все эти посторонние кавычки, и это работает как задумано:

@ECHO OFF  SET RegPath=HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\  REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v LastKey /t REG_SZ /d %RegPath% /f  START RegEdit 
Благодарю. Кавычки в пакетных / bash-скриптах - действительно единственное, что я больше всего ненавижу в компьютерах. Andre Terra 7 лет назад 0
Argh! Это была своего рода проблема. На самом деле, это были два отдельных вопроса. Одним из них был завершающий обратный слеш во второй строке, который интерпретируется как escape-символ. Мне нужен один набор кавычек, если в параметре / d есть пробелы. Вот что у меня получилось: SET RegPath = blah REG ADD ... / d "% RegPath%" / f Kevin Jones 7 лет назад 1