REG 添加不 运行
REG add Doesn't Run
我编写了一个批处理文件来测试用户的 Microsoft Office 版本,将 Excel 加载项从共享驱动器复制到他们的设备,然后将注册表项添加到他们的设备。
批处理中的每个单独操作都按设计工作。但是当我将它们全部组合在一起时,文件不喜欢 REG add
命令并完全关闭命令 window (即使我将 Pause
放在 REG add
行之后) .
为了排除故障,我创建了一个新的批处理文件并向其中添加了我的代码片段,一次一个部分,并在每次添加新部分时测试该文件。每个部分 运行 都很好,直到我到达这个部分:
CHDIR "C:\Windows\System32"
IF NOT %ALREADY_ENABLED%=="TRUE" (
REM Add the new key value if it doesn't exist already.
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%PATH%" /f
)
为了查看问题是否出在我的 IF
语句上,我注释掉了 REG add
行并将 ECHO Hello World
放在 IF
语句中。文件 运行 很好,并按预期给出了 Hello World
输出。
我知道 REG add
命令有效,因为我有一个只包含那段代码的批处理文件,它工作得很好:
@Echo off
setlocal enableDelayedExpansion ENABLEEXTENSIONS
chdir "C:\Windows\System32"
SET PATH=\"C:\Program Files (x86)\Microsoft Office\Office15\Library\Cerner_AddIn.xlam\"
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%PATH%" /f
我认为问题与 PATH
变量有关,但我很困惑为什么这在一个文件中有效而在另一个文件中无效。 PATH
的值是否有可能在设置后在运行时以某种方式发生变化?
我不确定如何捕获错误以查看此处抛出的错误。我尝试处理错误的所有方法都不起作用,命令 window 关闭。关于我在这里做错了什么有什么想法吗?
也许这段代码可以提供帮助:
SET "myPATH=C:\Program Files (x86)\Microsoft Office\Office15\Library\Cerner_AddIn.xlam"
IF NOT "%ALREADY_ENABLED%"=="TRUE" (
REM Add the new key value if it doesn't exist already.
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%myPATH%" /f
)
注:
- 不更改系统环境变量
PATH
;使用另一个变量名 (myPATH
);
- 在
set "variablename=variable value"
中引用;
- 在
if
声明中引用;
- 要捕获批处理文件中的任何错误,请在调试时使用
echo ON
。
资源(必读):
我编写了一个批处理文件来测试用户的 Microsoft Office 版本,将 Excel 加载项从共享驱动器复制到他们的设备,然后将注册表项添加到他们的设备。
批处理中的每个单独操作都按设计工作。但是当我将它们全部组合在一起时,文件不喜欢 REG add
命令并完全关闭命令 window (即使我将 Pause
放在 REG add
行之后) .
为了排除故障,我创建了一个新的批处理文件并向其中添加了我的代码片段,一次一个部分,并在每次添加新部分时测试该文件。每个部分 运行 都很好,直到我到达这个部分:
CHDIR "C:\Windows\System32"
IF NOT %ALREADY_ENABLED%=="TRUE" (
REM Add the new key value if it doesn't exist already.
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%PATH%" /f
)
为了查看问题是否出在我的 IF
语句上,我注释掉了 REG add
行并将 ECHO Hello World
放在 IF
语句中。文件 运行 很好,并按预期给出了 Hello World
输出。
我知道 REG add
命令有效,因为我有一个只包含那段代码的批处理文件,它工作得很好:
@Echo off
setlocal enableDelayedExpansion ENABLEEXTENSIONS
chdir "C:\Windows\System32"
SET PATH=\"C:\Program Files (x86)\Microsoft Office\Office15\Library\Cerner_AddIn.xlam\"
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%PATH%" /f
我认为问题与 PATH
变量有关,但我很困惑为什么这在一个文件中有效而在另一个文件中无效。 PATH
的值是否有可能在设置后在运行时以某种方式发生变化?
我不确定如何捕获错误以查看此处抛出的错误。我尝试处理错误的所有方法都不起作用,命令 window 关闭。关于我在这里做错了什么有什么想法吗?
也许这段代码可以提供帮助:
SET "myPATH=C:\Program Files (x86)\Microsoft Office\Office15\Library\Cerner_AddIn.xlam"
IF NOT "%ALREADY_ENABLED%"=="TRUE" (
REM Add the new key value if it doesn't exist already.
REG add HKCU\Software\Microsoft\Office.0\Excel\Options /v OPEN /t REG_SZ /d "%myPATH%" /f
)
注:
- 不更改系统环境变量
PATH
;使用另一个变量名 (myPATH
); - 在
set "variablename=variable value"
中引用; - 在
if
声明中引用; - 要捕获批处理文件中的任何错误,请在调试时使用
echo ON
。
资源(必读):