检查cmd shell中的两个变量是否指向同一文件夹的可靠方法

uta*_*ngo 3 cmd batch-file

仅通过比较这些变量无法检查:

C:\>set "d1=C:\"
C:\>set "d2=C:\Windows\.."
C:\>if %d1%==%d2% (echo true) else (echo false)
false
Run Code Online (Sandbox Code Playgroud)

我可以用pushdpopd和其他变量组成一个复杂的构造但是不是更简单的方法吗?

jeb*_*jeb 5

您可以使用小函数规范化变量.

set d1=C:\
set d2=C:\Windows\..
call :normalize d1
call :normalize d2
if "%d1%"=="%d2%" (echo true) else (echo false)
exit /b

:normalize
setlocal EnableDelayedExpansion
for /F "delims=" %%M in ("!%1!") do (
    endlocal
    set "%1=%%~dpM"
)
exit /b
Run Code Online (Sandbox Code Playgroud)