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
)