繁体   English   中英

如何在Powershell中使用Robocopy进行数组循环使用?

[英]How to use Robocopy in a Powershell for loop using arrays?

我们正在将两股股票迁移,例如将oldShare迁移到newShare。 我以前从未使用过Robocopy,但基于我的谷歌搜索,看来这是我应该用于此任务的工具。 共享上的文件目录设置不同,因此我必须使用多个Robocopy命令,而不仅仅是一个。 使用我的基本编程知识以及在Powershell上进行的更多搜索,这是我想在新共享上运行的脚本:

$source_array=@("\\DC02\ArchivedData\IT-Backups", "\\DC02\Contractors", "\\DC02\DataLoad", "\\DC02\Infrastructure", "\\DC02\Support")
$destination_array=@("S:\Shares\COMPANYNAME\IT\Archives", "S:\Shares\COMPANYNAME\Public\Contractors", "S:\Shares\COMPANYNAME\Dataload", "S:\Shares\COMPANYNAME\IT\Infrastructure", "S:\Shares\COMPANYNAME\Public\Support")
for ($i=0; $i -lt $source_array.length; $i++) {

    $date=(Get-Date -format dd-MM-yyyy_hh:mm:ss_tt)
    robocopy $source_array[$i] $destination_array[$i] /e /zb /copyall /r:3 /w:3 /xo /log:c:\ROBOCOPY_Logs\$date.log /V /NP

}

这看起来正确吗? 我只是想确保我不会大手大脚,因为我以前从未真正使用过Robocopy或Powershell。

有一些语法错误(Windows文件名中的冒号,类似的东西),但是Powershell部分很好。 感谢您的/ L建议。

我的最终脚本:

$source_array=@('\\DC02\ArchivedData\IT-Backups', '\\DC02\Contractors', '\\DC02\DataLoad', '\\DC02\Infrastructure', '\\DC02\Support')
$destination_array=@('S:\Shares\COMPANYNAME\IT\Archives', 'S:\Shares\COMPANYNAME\Public\Contractors', 'S:\Shares\COMPANYNAME\Dataload', 'S:\Shares\COMPANYNAME\IT\Infrastructure', 'S:\Shares\COMPANYNAME\Public\Support')

for ($i=0; $i -lt $source_array.length; $i++) {

    $date=(Get-Date -format mm-dd-yyyy_hh-mm-ss_tt)
    $filename=('robocopy_iteration' + '_' + $i + '_' + $date)

    # robocopy $source_array[$i] $destination_array[$i] /V /L /TEE /E /COPYALL /ZB /ETA /XO /R:3 /W:3 /LOG:C:\Users\USER\Desktop\$filename.log
    # /L means this is a test, it won't actually copy. Rather it will tell you what will be copied, skipped, etc. 

    robocopy $source_array[$i] $destination_array[$i] /V /TEE /E /COPYALL /ZB /ETA /XO /R:3 /W:3 /LOG:C:\Users\USER\Desktop\$filename.log

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM