此批处理脚本中的所有内容都可以正常工作,但是当我输入IF
语句时,出于某种原因set /p id=
实际上并未捕获任何内容。事实上不久它就会回响:
您选择了会话%id%。
但是这将返回一个空白,好像没有为ID输入任何内容。
非常感谢任何建议。
@echo off
echo Please be sure CMD is being run as an administrator.
echo.
:loop
set /p targetpc="Which PC would you like to query for users (Hostname or IP)?: "
echo.
echo Querying %targetpc%...
echo.
quser /server:%targetpc%
echo.
set /p choice="Would you like to log a user off of %targetpc%? [Y/N]: "
echo.
IF /I "%choice%" EQU "Y" (
echo Enter user's session ID:
set /p id=
echo.
echo You chose session %id%.
echo.
logoff %id% /server:%targetpc% /V
echo.
echo Done!
echo.
goto loop
)
IF /I "%choice%" EQU "N" (
goto loop
)
答案 0 :(得分:2)
您在设置它的同一个块中使用%id%
值。在这种情况下,您需要使用延迟扩展。
将这些行分别添加到脚本的顶部和底部:
SETLOCAL EnableDelayedExpansion
<Your script>
ENDLOCAL
现在使用阻止扩展表示法(!
围绕变量而不是%
):
IF /I "%choice%" EQU "Y" (
echo Enter user's session ID:
set /p id=
echo.
echo You chose session !id!.
echo.
logoff !id! /server:%targetpc% /V
echo.
REM Note, replacing with a period here.
echo Done.
echo.
goto loop
)
此网站上有很多关于延迟扩展的其他问题,因此如果您需要,在batch-file标记内快速搜索会产生大量其他信息。