RMK*_*RMK 2 powershell robocopy
我正在使用较旧的版本,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
Run Code Online (Sandbox Code Playgroud)
但这导致
72880735 H:\ 1.txt
33038490 H:\ 10.txt
64878348 H:\ 2.txt
25875810 H:\ 3.txt
0%
所以我去除了100%,但没有去除0%。
/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
Run Code Online (Sandbox Code Playgroud)
如果由于某些原因必须使用多线程,则应该能够在完成后从日志中删除进度信息,如下所示:
(Get-Content $logpath) | Where-Object {
$_ -notmatch '^\s*\d{1,3}%\s*$'
} | Set-Content $logpath
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4455 次 |
| 最近记录: |