Сравнение строк в цикле? (конкретно в ТК) - PullRequest
0 голосов
/ 03 июля 2018

Я хочу взять кучу файлов в папке и сделать что-нибудь, если файл не содержит слова Microsoft. Я работаю в Teamcity, но, кроме количества%, переменные должны быть такими же, как командные файлы.

setlocal enabledelayedexpansion

for /r %%%%v in (*.dll) do (
REM Do something that cif fails changes the errorlevel
echo !errorlevel!
set filename = %%%%~nv
echo !filename!
if !filename:Microsoft!==!filename! (
if !errorlevel! neq 0 goto :error
)
)

Когда я отображаю уровень ошибки, я получаю правильный результат, однако эхо-имя файла не работает, а это значит, что я его неправильно установил. Конечно, тогда сравнение не имеет смысла (оно никогда не попадает в блок if).

Что я делаю не так?

1 Ответ

0 голосов
/ 04 июля 2018

Так что комментарии на мой вопрос были действительно всем, что мне было нужно, спасибо! В любом случае, если кто-то еще сталкивается с этим, вот код, который работает:

setlocal enabledelayedexpansion

for /r %%%%v in (*.dll) do (
set filename=%%%%~nv
REM Do something that if fails changes the errorlevel
if !errorlevel! neq 0 if /i "!filename:Microsoft=!"=="!filename!"  (
 goto :error
)
)

Обратите внимание, что нужно быть осторожным, не делать ничего, что могло бы изменить уровень ошибки перед его использованием, в том числе повторять его ...

...