2016-10-13 12 views
2

私が指定したフォルダ内のすべてのファイルに再帰的に反復する、次のバッチスクリプトを持っている:バッチルーチンから特定の行を出力する方法は?

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 

:実行したときに、それは上でそれが動作する各ファイルごとに次の出力を生成し、

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

私が望むのは、反復処理ごとに次の2行しか含まれていない出力テキストファイルを作成することです。

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

私は、バッチのようなものを使用して別のバッチ(これは単なる例示で)からスクリプト:

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

が、私が試したことすべては私が必要なものを除いて、奇妙なものをたくさん書いてしまいました。

これをどのように達成するかについて誰かが私に啓発できたら、それは大いに感謝します。

答えて

1

あなたのループ内のコマンドの出力を、findstrと2つの式で1行に1つパイプするだけです。

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" 
+0

ありがとうございます。あなたはそれを完全に釘付けにしました。 =)。 私が試したときに起こったことの1つは、「アーカイブの作成」を使用するとその行は出力されませんが、「作成」のみを使用すると魅力的な働きをするということです。 –

+0

あなたは本当に私を救いました、ありがとう! =) –

+0

完全に!申し訳ありませんが、私は前にそれを受け入れていない、私はこのコミュニティにちょっと新しいです。再度、感謝します! =) –

関連する問題