不能仅通过比较这些变量来检查:
C:\>set "d1=C:\"
C:\>set "d2=C:\Windows\.."
C:\>if %d1%==%d2% (echo true) else (echo false)
false
我可以用pushd
和popd
和其他变量组成一个复杂的结构,但没有更简单的方法吗?
不能仅通过比较这些变量来检查:
C:\>set "d1=C:\"
C:\>set "d2=C:\Windows\.."
C:\>if %d1%==%d2% (echo true) else (echo false)
false
我可以用pushd
和popd
和其他变量组成一个复杂的结构,但没有更简单的方法吗?
您可以使用一个小函数对变量进行标准化。
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
类似于 jeb 的解决方案,但使用 FOR 而不是被调用的子程序
for %%A in ("%d1%") do for %%B in ("%d2%") do if "%%~fA"=="%%~fB" (echo true) else (echo false)
不知道它是否适合您的需要,但您可以在第一个目录上创建一个文件,然后检查它是否存在于第二个目录中:
echo test > %d1%\checkthisfile.txt
if exist %d2%\checkthisfile.txt (echo true)