批量获取和显示用户输入

Batch Getting & Displaying User Input

为什么此代码不起作用?

@echo off
set /p param=Enter Parameters: 
echo %param%

输出:

(Nothing)

相关帖子我都找遍了,也没找到问题所在。没有 space 问题,或者我可以识别的语法问题

更新: 正如 rojo 所述,由于代码块可以正常工作,这里是完整的代码,但无法正常工作。

@echo off

for /f %%j in ("java.exe") do (
    set JAVA_HOME=%%~dp$PATH:j
)

if %JAVA_HOME%.==. (
    echo java.exe not found
) else (
    set /p param=Enter Parameters: 
    echo %param%
    (statement using JAVA_HOME)
)

pause

输出:

Enter Parameters: jfdklsaj
ECHO is off.
...

Laf 所示,这可以通过延迟扩展来解决:

@echo off
setlocal enableDelayedExpansion

for /f %%j in ("java.exe") do (
set JAVA_HOME=%%~dp$PATH:j
)

if %JAVA_HOME%.==. (
    echo java.exe not found
) else (
    set /p param=Enter Parameters: 
    echo !param!
    (statement using JAVA_HOME)
)