我想在文件夹中提取一堆文件,如果文件中不包含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块)。
我在做什么错了?
答案 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
)
)
请注意,不要在使用前做任何可能改变错误级别的事情,包括回显它。