当输出生成多行时,无法在批处理文件中解析命令输出

时间:2019-05-16 14:56:01

标签: parsing batch-file cmd multiline delayedvariableexpansion

我正在尝试解析多行输出,并在一些方面挣扎。我正在尝试编写一个脚本,该脚本将执行“ diff”命令并识别已被修改或添加到核心项目的文件。那里的脚本接受2个输入参数作为主存储库的顶层和修改后的项目的顶层。代码是:

for /f "delims=" %%a in ('diff -qr "%path1%" "%path2%"') do (
        SET output=%%a
        echo a:%%a
        echo output:%output%
        ...
    )

我遇到的第一个问题是输出是

  • a:仅在...
  • 输出:
  • 因此,似乎'SET output'命令似乎没有为'for'循环分配变量值。这使得处理输出成为挑战。我想做的是将diff结果分成不同的列表。 diff实用程序会生成3种可能的输出:

  • 仅在
  • 文件 不同
  • 仅在
  • 我试图确定输出字符串属于哪种类型的输出,然后仅去除 path1 文件的文件名,但是我之前用于测试的代码包含的字符串不适用于%% a变量;即:

    SET newFile=Only^ in^ 
    if NOT "x%%a:%newFile%=%% == "x%%a%%" do ...
    

    感谢您的帮助。谢谢
    -b

    0 个答案:

    没有答案