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

时间:2013-02-09 15:03:35

标签: batch-file cmd

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

C:\>set "d1=C:\"
C:\>set "d2=C:\Windows\.."
C:\>if %d1%==%d2% (echo true) else (echo false)
false

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

与jeb的解决方案类似,但使用FOR代替被调用的子程序

for %%A in ("%d1%") do for %%B in ("%d2%") do if "%%~fA"=="%%~fB" (echo true) else (echo false)

答案 2 :(得分:1)

不知道它是否适合您的需要,但您可以在第一个目录上创建一个文件并检查它是否存在于第二个:

echo test > %d1%\checkthisfile.txt
if exist %d2%\checkthisfile.txt (echo true)