我已经编写了一个批处理文件,用于测试用户的Microsoft Office版本,将Excel加载项从共享驱动器复制到他们的设备,并向其设备添加注册表项。
批处理中的每个单独操作都按设计工作。但是,当我将它们组合在一起时,该文件不像REG add
命令并完全关闭命令窗口(即使我将Pause
放在REG add
行之后。 / p>
要进行故障排除,我创建了一个新的批处理文件并添加了我的代码片段,一次一个部分,并在每次添加新部分时测试该文件。每个部分都运行良好,直到我进入本节:
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\15.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\15.0\Excel\Options /v OPEN /t REG_SZ /d "%PATH%" /f
我认为这个问题与PATH
变量有关,但我对于为什么这个在一个文件中工作而在另一个文件中工作却傻眼了。在PATH
设置之后,PSeq
的值是否可能在运行时以某种方式发生变化?
我不确定如何捕获错误甚至看到这里抛出的错误。我尝试处理错误的所有内容都不起作用,命令窗口关闭。关于我在这里做错了什么的想法?
答案 0 :(得分:1)
也许这段代码可以提供帮助:
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\15.0\Excel\Options /v OPEN /t REG_SZ /d "%myPATH%" /f
)
注意:
PATH
;使用另一个变量名称(myPATH
); set "variablename=variable value"
; if
声明; echo ON
。 资源(必读):