我有以下批处理脚本,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"