Batch file Set/P未捕获IF语句中的输入
这个批处理脚本中的一切都很好,但是当我输入Batch file Set/P未捕获IF语句中的输入,batch-file,if-statement,Batch File,If Statement,这个批处理脚本中的一切都很好,但是当我输入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 q
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
)
您正在设置的同一块中使用
%id%
值。在这种情况下,您需要使用延迟扩展
分别在脚本的顶部和底部添加以下行:
SETLOCAL EnableDelayedExpansion
<Your script>
ENDLOCAL
这个网站上还有很多关于延迟扩展的问题,因此如果您需要,在标签中快速搜索应该会产生很多额外的信息。您可能是一位绅士和学者+1.谢谢你的帮助。
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
)