2016-07-27 17 views
0

robocopyのログファイルから%progress-valueの行をすべて削除したいとします。行は次のようになります。これは(上記の例でhuge.PSTanother.PSTと行全体を)離れすぎてラインをカットするので、私はこの試みFINDSTRを使用してrobocopyログファイルから%で行を削除する方法は?

FINDSTR.exe /V "%" LogFile.txt > LogFileWithoutPercentageLines.txt 

で成功していないよ

  *EXTRA Datei   7.3 g test.pst 
      Neuer     7.3 g huge.PST 
    0.0% 
    0.0% 
    0.0% 
    0.1% 
    0.1% 
    0.1% 
    0.1% 
99.8% 
99.9% 
99.9% 
99.9% 
99.9% 
99.9% 
100% 
      Neue Datei   7.5 g another.PST 
    0.0% 

% - 行には、0.0%より前の2つのスペースとCRが含まれています。
% - 行には、10.0%の前に1つのスペースとCRが含まれています。
% - 行には100.0%の前にスペースは含まれませんが、100%とCRの後には2つのスペースが含まれます。

FINDSTRを使用した場合、この無駄な0.0%〜100%の行を取り除くにはどうすればよいですか?

答えて

1

使用robocopy with /NP switch、CF ログオプションrobocopy /?:例えば

/NP :: No Progress - don't display percentage copied. 

robocopy "%_source%" "%_target%" /log:"%temp%\38610436.log" /NP

はしかし、スクリプトコメント次は、すべてのこと不要の除去可能な方法を示してい既存のものから進歩したもの雑草に感染したものログファイル(findstr自体は、この複雑な作業には十分ではありません):

@ECHO OFF >NUL 
SETLOCAL EnableExtensions DisableDelayedExpansion 

set "_source=d:\bat\odds and ends\B"  rem change to match your circumstances 
set "_target=d:\bat\odds and ends\Bcopy" rem detto 
set "_logFileRawData=%temp%\38610436.log" rem detto 
set "_logFileCleaned=%temp%\38610436a.log" rem detto 

rem /NP : No Progress - don’t display % copied 
rem robocopy "%_source%" "%_target%" /log:"%temp%\38610436.log" /NP 
    robocopy "%_source%" "%_target%" /log:"%temp%\38610436.log" 

>"%_logFileCleaned%" (
    for /f "usebackq tokens=1,* delims=:" %%G in (`findstr /N "^" "%_logFileRaw%"`) do (
    set "_line=%%H" 
    call :strip_Progress 
    SETLOCAL EnableDelayedExpansion 
     echo(!_line! 
    ENDLOCAL 
) 
) 
ENDLOCAL 
goto :eof 

:strip_Progress 
set "_zero="      rem zero percent indicator 
set "_line=%_line%"    rem remove all Carriage Return characters 
    rem after above command, _line with progress could be, excluding Square Brackets: 
    rem [New File    0 ZeroFile.ext100% ] 
    rem [New File   51808 TinyFile.txt 0% 100% ] 
    rem [Newer    1.1 m Mid_File.ext 0% 21% 42% 64% 85% 100% ] 
    rem [New File  162.1 m Big_File.ext 0.0% 0.6% 1.2% … 99.3% 99.9%100% ] 
if "%_line%"=="" goto :eof 
if "%_line:~-6%"=="100%% " call :removeProgress 
goto :eof 

:removeProgress 
set "_line=%_line:~0,-6%"   rem strip six trailing characters 
if defined _zero goto :eof 
    rem as yet, zero percent indicator not set 
:stripTrailingSpace 
if "%_line:~-2%"==" " set "_line=%_line:~0,-1%" & goto :stripTrailingSpace 
if "%_line:~-4%"==" 0%%" set "_zero=4" & set "_line=%_line%x%%" 
if "%_line:~-6%"==" 0.0%%" set "_zero=6" 
if "%_line:~-1%"=="%%" goto :removeProgress 
goto :eof 

さらに資源(必読、不完全):

+0

Escape Characters, Delimiters and Quotesをいただき、誠にありがとうございますあなたの解決策。レコードの場合:進捗率なしでrobocopyを実行することは、7.5 GB * .pstのような巨大なファイルの画面上で進捗状況を確認する必要があるため、この場合はオプションではありません。/NPをログのみのAFAIKに使用する方法はありません。 – PeterCo

関連する問題