web-dev-qa-db-ja.com

変数の最後の3文字が別の変数と一致するかどうかを確認するにはどうすればよいですか?

%var1%%var2%があります

var1="UserInput"
var2=file.log

ユーザーが%var1%を「file.txt」と入力した場合、(可能であれば)最後の3文字(または可能であればファイル形式)のみをチェックするにはどうすればよいですか%var2%の最後の3文字またはファイル形式と一致するかどうかを確認しますか?

同じことを行う別の方法も歓迎されます(ただし、ユーザー入力変数必須存在する必要があります)

4
Tom

固定数の文字をチェックする場合は、最後の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
7
dbenham

変数の最後の3文字が別の変数と一致するかどうかを確認するにはどうすればよいですか?

変数部分文字列構文を使用して、各変数の最後の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

参考文献

5
DavidPostill