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
答案 0 :(得分:1)
好。问题出在以下块中:
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。例如ECHO Hostname Entered is: %Hostname%
一旦您查询了某些内容并返回到:开始标签,然后再次查询另一台服务器,他就会使用之前输入的主机名。
要解决此问题,您必须使用感叹号将变量括起来。 %Hostname%
- > !Hostname!
。
这仅在您最初在批处理文件中执行以下命令时才有效:
SETLOCAL ENABLEDELAYEDEXPANSION
它会以这种方式工作:
IF %MenuChoice% == 1 (
set /p Hostname=Enter Hostname:
REG QUERY \\!Hostname!\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
goto start
)
当然,你必须在所有其他街区改变这一点。
我认为这可以解决您在XP上的问题。