首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将新行字符添加到for循环Windows批处理中的变量

将新行字符添加到for循环Windows批处理中的变量
EN

Stack Overflow用户
提问于 2013-02-25 10:06:40
回答 1查看 3.1K关注 0票数 1

我正在循环一个命令的结果,并将它们全部附加到该循环中的一个变量(!results!)中。在循环的末尾,如果结果不是空的,我就打印它们。我希望每一个结果都出现在新的行上。

代码语言:javascript
复制
setlocal EnableDelayedExpansion
set results=
set lf=^

for /f "delims=" %%a in ('call mvn dependency:analyze ^| findstr "WARNING"')
    do ( set results=!results!!lf!%%a )
    if not [!results!]==[] (
        echo. ------------------------------------
        echo. FOUND MATCHES 
        echo. ------------------------------------
        echo. !results! 
        echo. ------------------------------------
        echo. ------------------------------------
        echo. && echo.
    )

我正在尝试使用我在这里看到的一种新的行批攻击,但在这种情况下似乎不起作用。

我得到了什么,

代码语言:javascript
复制
------------------------------------
FOUND MATCHES 
------------------------------------
[WARNING] Used undeclared dependencies found: [WARNING]    org.springframework:spring-jms:jar:3.0.5.RELEASE:compile   [WARNING]    org
    .springframework:spring-beans:jar:3.0.5.RELEASE:compile         [WARNING]    xml-apis:xml-apis:jar:1.3.04:compile
------------------------------------
------------------------------------

我想要什么

代码语言:javascript
复制
------------------------------------
FOUND MATCHES 
------------------------------------
[WARNING] Used undeclared dependencies found:
[WARNING]    org.springframework:spring-jms:jar:3.0.5.RELEASE:compile   
[WARNING]    org.springframework:spring-beans:jar:3.0.5.RELEASE:compile         
[WARNING]    xml-apis:xml-apis:jar:1.3.04:compile
------------------------------------
------------------------------------
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 10:55:30

为了让它运行,我必须添加一些setlocal语句,并在set lf=^for之间添加额外的空行。一旦我这样做了,我实际上看到了与你不同的输出:

代码语言:javascript
复制
 !results!!lf!%a
[WARNING] a
[WARNING] c

只要简单地在Win7之前添加以下内容,就可以很容易地修复在我的( for )机器上工作的问题

代码语言:javascript
复制
set results=

输出中将有一个前导空行,但当数据添加到results中时,添加条件肯定会让人感到惊讶。

但是,考虑到你得到的输出的不同,我想我们需要采取一种不同的方法来让它为你工作。无论如何,这应该比使用换行符更加健壮。

代码语言:javascript
复制
@echo off
setlocal
setlocal EnableDelayedExpansion

set showed_header=0
for /f "delims=" %%a in ('call mvn dependency:analyze ^| findstr "WARNING"') do (
   if !showed_header!==0 (
      set showed_header=1
      echo ------------------------------------
      echo FOUND MATCHES 
      echo ------------------------------------
   )

   echo %%a
)

if %showed_header%==1 (
   echo ------------------------------------
   echo ------------------------------------
   echo.
   echo.
)

使用perl -e"print qq{[WARNING] a\nb\n[WARNING] c\n}"进行测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15064461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档