for循环中的字符串比较? (特别是在TC中)

时间:2018-07-03 18:39:57

标签: loops batch-file substring teamcity

我想在文件夹中提取一堆文件,如果文件中不包含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 :(得分:0)

因此,对我的问题的评论确实是我所需要的,谢谢! 无论如何,如果其他任何人遇到这种情况,下面的代码将起作用:

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
)
)

请注意,不要在使用前做任何可能改变错误级别的事情,包括回显它。