[英]Why does this REG QUERY command work on Win7, but not WinXP
comamnd是: reg query \\\\cois316\\hklm\\Software\\Microsoft\\.NETFramework /v EnableIEHosting
在Windows 7上可以正常工作,但是在XP上出現錯誤,提示“找不到網絡路徑”。 主機名在網絡上有效,我可以從計算機ping到主機名。
此腳本正在以下方面使用:
@echo off
cls
:start
echo Main Menu
echo ---------
echo 1) Get Reg Key Status
echo 2) Set Reg Key
echo 3) Exit
echo.
set /p MenuChoice=Choose an option:
IF %MenuChoice% == 1 (
set /p Hostname=Enter Hostname:
REG QUERY \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
goto start
)
IF %MenuChoice% == 2 (
set /p Hostname=Enter Hostname:
REG ADD \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting /t REG_DWORD /d
0x00000001
goto start
)
IF %MenuChoice% == 3 (
goto end
)
IF %MenuChoice% == 4 (
set /p Hostname=Enter Hostname:
echo \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
pause
)
cls
goto start
:END
好的。 問題在以下塊內:
IF %MenuChoice% == 1 (
set /p Hostname=Enter Hostname:
REG QUERY \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
goto start
)
為什么? 一旦命令解釋程序命中了()塊,他就會自動解析該塊中包含的所有變量。 這意味着語句set /p Hostname=Enter Hostname:
將起作用,但是Hostname變量已被解析。 為了證明這一點,請嘗試添加回聲。 例如, ECHO Hostname Entered is: %Hostname%
一旦您查詢了某些內容,然后回到:start標簽,然后再次查詢另一台服務器,該服務器正在使用先前輸入的主機名。
要解決此問題,必須在變量中加上一個感嘆號。 %Hostname%
-> !Hostname!
。
僅當您最初在批處理文件中執行以下命令時,此方法才有效:
SETLOCAL ENABLEDELAYEDEXPANSION
它將以這種方式工作:
IF %MenuChoice% == 1 (
set /p Hostname=Enter Hostname:
REG QUERY \\!Hostname!\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
goto start
)
當然,您還必須在所有其他塊中更改此設置。
我認為這可以解決您在XP上的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.