我有以下批处理脚本,递归迭代给定文件夹中的所有文件:
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
我想要的是创建一个输出文本文件,每次迭代只包含这两行:
Creating archive: C:\test\7208969.zip
Everything is Ok
我尝试使用类似的东西从另一个批处理调用主批处理脚本(这只是一个说明性示例):
FOR /F "(tried with skip, delims, tokens, etc)" %%G IN ('7zip.bat') DO echo %%G
但我所尝试的所有内容最终都会写出许多奇怪的东西,除了我需要的东西。
如果有人能以任何方式启发我如何完成这项工作,我们将非常感激!
答案 0 :(得分:1)
使用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"