4

У меня %var1% и %var2%

var1="UserInput"
var2=file.log

Если пользователь вводит %var1% как «file.txt», как я могу (если возможно) проверить только три последних символа (или формат файла, если это возможно), чтобы увидеть, соответствует ли он последним символам %var2% или формат файла?

Также приветствуется другой метод, который делает то же самое (но там должна быть переменная пользовательского ввода)

2 ответа2

7

Если вы собираетесь проверить фиксированное количество символов, то вам следует проверить последние 4, иначе "файл".Журнал "будет соответствовать" 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
5

Как проверить, соответствуют ли три последних символа переменной другой переменной?

Используйте синтаксис подстроки переменных, чтобы извлечь последние 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

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .