如何输出批处理程序中的特定行?

我有以下批处理脚本,recursion地迭代给定文件夹中的所有文件:

FOR /R %%i IN ("*.wmv") DO "C:\Program Files\7-Zipa\7za.exe" a -mx0 -tzip -pPassword -mem=AES256 -y "%%~dpni.zip" "%%i" 

运行时,它会为每个处理的文件生成以下输出:

  7-Zip (a) [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04 Scanning the drive: 1 file, 382316 bytes (374 KiB) Creating archive: C:\test\7208969.zip Items to compress: 1 Files read from disk: 1 Archive size: 382524 bytes (374 KiB) Everything is Ok 

我想要的是创build一个输出文本文件,每个迭代只包含这两行:

 Creating archive: C:\test\7208969.zip Everything is Ok 

我已经尝试从另一批使用类似的东西(这只是一个说明性的例子)调用主批处理脚本:

 FOR /F "(tried with skip, delims, tokens, etc)" %%G IN ('7zip.bat') DO echo %%G 

但所有我试过的都写了很多奇怪的东西,除了我所需要的。

如果有人能够以任何方式启发我如何做到这一点,将不胜感激!

只需在你的循环中使用findstr和2表达式输出你的命令,每行一个。

 FOR /R %%i IN ("*.wmv") DO "C:\Program Files\7-Zipa\7za.exe" a -mx0 -tzip -pPassword -mem=AES256 -y "%%~dpni.zip" "%%i" | findstr /C:"Creating archive" /C:"Everything" 

在这一点上,我没有发生错误的情况。 显然你可以添加任意数量的字符串,只要你想:

 ... | findstr /C:"Creating archive" /C:"Everything is OK" /C:"Something went wrong"