从 robocopy 日志中删除百分比
Remove percentages from robocopy log
我使用的是旧版本的 robocopy
,即使设置了 /NJH
和 /NJS
参数,它也会在日志中包含百分比。所以我想从日志中删除百分比:
72880735 H:.txt
100%
33038490 H:.txt
100%
64878348 H:.txt
100%
25875810 H:.txt
0%
100%
我试过
(Get-Content $logfile) | Where-Object {
$_ -match '[\s](\d{1,})(\s+)(\w\W\W.+)'
} | Set-Content $logfile
但这会导致
72880735 H:.txt
33038490 H:.txt
64878348 H:.txt
25875810 H:.txt
0%
所以我去掉了 100%,但没有去掉 0%。
/njh
和/njs
与百分比信息无关。您需要通过将选项 /np
添加到 robocopy
命令行来抑制进度输出。
/np
Specifies that the progress of the copying operation (the number of files or directories copied so far) will not be displayed.
编辑: 查看您的实际命令行后,看起来 /np
与 /mt
不兼容。即使存在 /np
,添加后一个参数也会使 robocopy
显示进度输出。如果您不需要 运行 多线程,我会删除该参数(添加 /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
我使用的是旧版本的 robocopy
,即使设置了 /NJH
和 /NJS
参数,它也会在日志中包含百分比。所以我想从日志中删除百分比:
72880735 H:.txt 100% 33038490 H:.txt 100% 64878348 H:.txt 100% 25875810 H:.txt 0% 100%
我试过
(Get-Content $logfile) | Where-Object {
$_ -match '[\s](\d{1,})(\s+)(\w\W\W.+)'
} | Set-Content $logfile
但这会导致
72880735 H:.txt 33038490 H:.txt 64878348 H:.txt 25875810 H:.txt 0%
所以我去掉了 100%,但没有去掉 0%。
/njh
和/njs
与百分比信息无关。您需要通过将选项 /np
添加到 robocopy
命令行来抑制进度输出。
/np
Specifies that the progress of the copying operation (the number of files or directories copied so far) will not be displayed.
编辑: 查看您的实际命令行后,看起来 /np
与 /mt
不兼容。即使存在 /np
,添加后一个参数也会使 robocopy
显示进度输出。如果您不需要 运行 多线程,我会删除该参数(添加 /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