考虑一个场景:
我的逻辑是 1)逐个读取每个用户的每个CSV文件 2)将RoboCopy列表放入每个用户文件夹的服务器A到服务器B的文件中 3)它适合我,但它超级慢。我想让它更快。
注意: 强制使用PowerShell
我的代码看起来像这样
$Get_CSV_File_INFO = @(Get-Content $Full_CSV_Path )
$SourcePath = "z:\"
foreach($a in $Get_CSV_File_INFO)
{
if($a -match '.zip')
{
$RS_Report_Name.add($a) |Out-Null
}
}
$RS_Report_Name | % { Robocopy $SourcePath $path $_} | Out-Null
任何建议都可能有所帮助。
我没有记录并且没有显示任何输出;它提高了速度 但仍然复制“2.57 MB”文件共花了大约9分钟,这在现实生活中并不好。
答案 0 :(得分:1)
假设<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
是一个仅过滤到要复制的文件的数组,更改$RS_Report_Name
以复制所有文件而不是逐个复制应该会产生很大的影响。
robocopy
如果仍然超过最大命令长度,则将数组拆分为较小的组,例如10-50,并在每个组中运行robocopy $SourcePath $path $RS_Report_Name
。
答案 1 :(得分:0)
感谢Matthew Wetmore建议在目标服务器上运行PowerShell脚本,并感谢Travis建议划分arraylist
$ Report_array2 = $ Report_array [$ Initial_Counter .. $ Counter]
Robocopy“$ SourcePath”“$ path”$ Report_array2 / MT / Z | out-Null
我还使用/ MT进行多线程处理和/ Z(重启模式)性能从几分钟增加到几秒