2015-12-30 78 views
0

運行此腳本後顯示somesoftware這是意外的,這一次我使用的是Windows 7 64位。試圖使用註冊表獲取軟件的安裝位置。如果我贊同THE_NAME然後我得到正確的安裝位置,但腳本退出的,如果別人說somesoftware是意外的這段時間批處理腳本此時意外

setlocal ENABLEEXTENSIONS 
set KEY_NAME=HKEY_CURRENT_USER\Software\somesoftware 
set VALUE_NAME=InstallDirectory 

SET THEME_NAME= 
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "HKEY_CURRENT_USER\Software\somesoftware" /v InstallDirectory`) DO (
    SET THEME_NAME=%%b 
) 
echo %THEME_NAME% 
if defined THEME_NAME (
set PathValue= %THEME_NAME% 

    ) else (
    echo %KEY_NAME%\%VALUE_NAME% not found. 
) 

回答

0

您的腳本不使用KEY_NAME或VALUE_NAME的,這可能是你是如何修剪你的榜樣下。

我修改了腳本,如下所示進行測試,它看起來像我預期的那樣工作。

setlocal ENABLEEXTENSIONS 
set KEY_NAME=HKEY_CURRENT_USER\Software\%1 
set VALUE_NAME=InstallDirectory 

SET THEME_NAME= 
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "%KEY_NAME%" /v %VALUE_NAME%`) DO (
    SET THEME_NAME=%%b) 
echo THEME_NAME=%THEME_NAME% 
if NOT ""=="%THEME_NAME%" (
    set PathValue=%THEME_NAME% 
    echo PathValue=%PathValue% 
) else (
    echo %KEY_NAME%\%VALUE_NAME% not found. 
) 

注:我改變了IF測試只是測試空字符串,爲我自己調試迴音,我用了1%,所以我可以測試...

你會想用這個作爲通知您最終劇本的指南。

+0

如果你設置一個變量爲空(空),它會得到** un **定義 - 你的測試用例清楚地顯示出來。 – Stephan

+0

@Stephan,很好,我認爲我仔細檢查了一下。我從我的答案中刪除了虛假示例。 –