Проверьте, заканчивается ли строка точкой с запятой - PullRequest
0 голосов
/ 30 августа 2018

Я добавляю путь к файлу к моей переменной PATH в Windows. Кажется, что в некоторых случаях существующий PATH заканчивается точкой с запятой, а иногда нет. Поэтому я должен проверить это перед тем, как добавить свой путь, иначе я мог бы получить строку PATH с двумя точками с запятой. Почему-то не понимаю, имея ;; в вашем ПУТИ создает проблемы. Теперь возникает вопрос: как проверить, заканчивается ли строка точкой с запятой? В качестве примера я попробовал:

set test_1=bla;
set test_2=%test_1:~-1%
if %test_2% EQU ^; echo hello

Но это не работает, если test_2 содержит точку с запятой.

1 Ответ

0 голосов
/ 30 августа 2018

Почему вы избегаете точки с запятой? Я предлагаю вам запустить справку для 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, какие переменные должны быть расширены.

...