Search code examples
windowsbatch-fileregistry

REG add Doesn't Run


I've written a batch file that tests for a user's Microsoft Office version, copy an Excel Add-In to their device from a shared drive, and add a registry key to their device.

Each individual action in the batch works as designed. But when I combine them all together, the file doesn't like the REG add command and completely closes the command window (even if I put Pause after the REG add line).

To troubleshoot, I created a new batch file and added pieces of my code to it, one section at a time, and tested the file each time a new section was added. Every section ran fine until I got to this section:

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
)

To see if the problem was my IF statement, I commented out the REG add line and put ECHO Hello World inside the IF statement. The file ran just fine and gave the Hello World output as expected.

I know the REG add command works because I have a batch file that only includes that piece of code and it works just fine:

@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

I think the problem has something to do with the PATH variable, but I'm dumbfounded as to why this works in one file but not the other. Is it possible that the value of PATH is somehow changing during runtime after it's been set?

I'm not sure how to trap the error to even see what error is being thrown here. Everything I've tried to handle the error with doesn't work and the command window closes. Any ideas on what I'm doing wrong here?


Solution

  • Maybe this code snippet could help:

    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
    )
    

    Note:

    • do not change system environment variable PATH; use another variable name (myPATH);
    • quoting in set "variablename=variable value";
    • quoting in if statement;
    • to trap any error in a batch file, use echo ON while debugging.

    Resources (required reading):