3

これらの変数を比較するだけではチェックできません。

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

pushdおよび追加の変数を使用して洗練された構成を作成できpopdますが、もっと簡単な方法はありませんか?

4

3 に答える 3

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
于 2013-02-09T17:08:04.683 に答える
4

jebのソリューションに似ていますが、呼び出されたサブルーチンの代わりにFORを使用します

for %%A in ("%d1%") do for %%B in ("%d2%") do if "%%~fA"=="%%~fB" (echo true) else (echo false)
于 2013-02-09T20:14:20.840 に答える
1

それがあなたのニーズに合うかどうかはわかりませんが、1番目のディレクトリにファイルを作成し、2番目にファイルが存在するかどうかを確認できます:

echo test > %d1%\checkthisfile.txt
if exist %d2%\checkthisfile.txt (echo true)
于 2013-02-09T15:44:51.320 に答える