批量循环模式匹配

时间:2015-07-30 19:47:01

标签: batch-file command-line

我正在尝试遍历一个包含很少名称的文件,并在另一个文件中搜索两个模式并回显一些语句。

就像我有两个文件:

1.Installers.txt 2.Progress.txt

  1. Installers.txt

      abc.jar
       def.jar
       tef.jar
       ....
          ....
    
  2. Progress.txt

       abc.jar deployment started
       abc.jar deployed successfully
       def.jar deployment started
    
  3. 所以我的要求是一次读取一行的Installers.txt文件,并搜索2个模式“abc.jar deployment started”和“abc.jar已成功部署”并报告成功,否则两个模式还没有被发现仍然在进行中。

    我曾尝试过写下面但是在做模式的时候很多事情都失败了,逻辑看起来并不好看。有人可以帮忙。

              for /F "usebackq delims=" %%a in ("Installer.txt") do (
       set /A i+=1
          call echo installing %%i%% : %%a
              :NOTVALID
           findstr /I "%%k\ in\ progress" %1%\progress.txt
                  If errorlevel 1 (
                  echo "installation still in progress.."
                   PING 127.0.0.1 -n 1 >NUL 2>&1 || PING ::1 -n 1 >NUL 2>&1
                  goto NOTVALID 
                ) else (
                      set /A i+=1
                      echo "installation completed.."
    
                    call set array[%%i%%]=%%a
                     call set n=%%i%%
                      )
    

1 个答案:

答案 0 :(得分:0)

请尝试以下符合您要求的代码:

 cls
@echo off
for /f %%g in (Installers.txt) do type Progress.txt|findstr "%%g" || echo %%g is Yet to start , still in progress

上面的代码将从安装程序中读取一行,然后在文件Progress.txt中搜索该字符串,然后在找到它时打印输出。