Почему вы избегаете точки с запятой? Я предлагаю вам запустить справку для if, открыв консоль cmd и набрав if /?
set "test_1=bla;"
if "%test_1:~-1%"==";" echo hello
Мы заключаем переменную и сопоставляемый элемент в двойные кавычки, чтобы устранить любые возможные пробелы, в которые можно проникнуть. Итак, по сути, вы сейчас совпадаете:
if ";"==";"
, что в точности соответствует.
Тогда, как примечание. Есть вероятность, что вы будете делать это в цикле. Если это так, вам нужно enabledelayedexpansion
, чтобы узнать больше о том, что нужно сделать setlocal /?
из консоли cmd.
при условии, что somefilename.txt
имеет следующий текст:
blah;
blahblah
bla;
@echo off
setlocal enabledelayedexpansion
for /f %%I in (somefilename.txt) do (
set "test_1=%%I"
if "!test_1:~-1!"==";" echo hello
)
будет повторяться:
hello
hello
потому что только в 2 предметах было ;
. но обратите внимание на замену %
на !
, чтобы сообщить delayedexpansion
, какие переменные должны быть расширены.