如何检查变量的最后三个字符是否与另一个变量匹配?

如何检查变量的最后三个字符是否与另一个变量匹配?

%var1%%var2%

var1="UserInput"
var2=file.log

如果用户输入%var1%“file.txt”,我怎样才能(如果可能)只检查最后三个字符(或者文件格式,如果可能的话)看看它是否与%var2%的最后三个字符或文件格式匹配?

另一种做同样事情的方法也是受欢迎的(但用户输入变量必须在那儿

答案1

如果您要检查固定数量的字符,那么您应该检查最后 4 个字符,否则“file.Log”将与“file.myLog”匹配。

但最好的选择是获取实际的扩展,无论长度如何:

@echo off
setlocal
set "var1=file.Log"
set "var2=file.myLog"

:: Option 1 using FOR loops
for %%A in ("%var1%") do for %%B in ("%var2%") do if "%%~xA"=="%%~xB" (
  echo Match
) else (
  echo No Match
)

: Option 2 using CALL parameters
call :matchExtension "%var1%" "%var2%" &&echo Match||echo No Match
exit /b

:matchExtension file1 fil2 --> returns 0 (success) if match, 1 (error) if no match
if "%~x1"=="%~x2" exit /b 0
exit /b 1

答案2

如何检查变量的最后三个字符是否与另一个变量匹配?

使用变量子字符串语法提取每个变量的最后 3 个字符。

批处理文件示例:

@echo off
setlocal
set /p var1="UserInput: "
set var1last3=%var1:~-3%
set var2=file.log
set var2last3=%var2:~-3%
if %var1last3% == %var2last3% (
  echo Match
  ) else (
  echo No Match
  )
endlocal

进一步阅读

相关内容