在 if 语句的设置变量中扩展 %userprofile%。批

Expanding %userprofile% within a Set Variable within an if Statement. Batch

我有类似下面的东西...

set /p dir=Specify Path:
 if exist %dir% (
 echo ok
 ) else(
 echo not ok
)

如果用户输入路径或变量,如 %userprofile%

当使用 %dir% 时,%userprofile% 不会在其中展开。

例如

set dir=%userprofile%
echo %dir% :: this does not expand
call echo %dir% :: this does expand
cd %dir% :: does not expand
call cd %dir% :: expands

但是我如何在 if 语句中扩展路径。

我一直在努力解决这个问题,但我并不是很了解 DelayedExpansion。

谢谢。

如果用户输入环境变量作为路径,您可以使用 CALL 命令轻松扩展该变量。所以您的代码将如下所示。

@ECHO OFF
set /p "dir=Specify Path:"

CALL set "dir=%dir%"

if exist "%dir%" (
    echo ok
) else (
    echo not ok
)