即使已设置robocopy
和/NJH
参数,我也会使用旧版/NJS
,其中包含日志中的百分比。所以我想从日志中删除百分比:
72880735 H:\1.txt 100% 33038490 H:\10.txt 100% 64878348 H:\2.txt 100% 25875810 H:\3.txt 0% 100%
我已经尝试了
(Get-Content $logfile) | Where-Object {
$_ -match '[\s](\d{1,})(\s+)(\w\W\W.+)'
} | Set-Content $logfile
但结果是
72880735 H:\1.txt 33038490 H:\10.txt 64878348 H:\2.txt 25875810 H:\3.txt 0%
所以我被剥夺了100%,但不是0%。
答案 0 :(得分:4)
/njh
和/njs
与百分比信息无关。您需要通过向/np
命令行添加选项robocopy
来取消进度输出。
/np
指定不显示复制操作的进度(到目前为止复制的文件或目录的数量)。
修改:在查看实际的命令行后,/np
似乎与/mt
不兼容。即使robocopy
存在,添加后一参数也会使/np
显示进度输出。如果您不需要运行多线程,我将删除该参数(添加/ndl
以防止目录出现在输出中)。
我还建议使用splatting而不是将参数列表放在一个字符串中:
$params = $src, $dest, ('/LOG:"{0}"' -f $logpath), '/L', '/NP', '/NC', '/BYTES',
'/NJH', '/NJS', '/NDL', '/E', '/MOVE', '/XC', '/XN', '/XO', '/XD',
$excludedFoldersList
& robocopy @params
如果由于某种原因你必须使用多线程,你应该能够在完成后从日志中删除进度信息,如下所示:
(Get-Content $logpath) | Where-Object {
$_ -notmatch '^\s*\d{1,3}%\s*$'
} | Set-Content $logpath