尝试将一些文件从服务器复制到网络共享,如下图所示:
文件夹 1
文件夹 2
我想要实现的是将源文件夹中ROOT文件夹的所有内容复制到目标文件夹中。但每次复制内容时,我希望它创建一个新的文件夹,名称与目标文件夹相同,但具有某种顺序编号后缀。源/ROOT文件夹中的文件夹和文件数量始终保持不变(2个文件夹和2个文件)。每次运行脚本时,我只需要将所有源内容放入目标的新文件夹中。以下是我一直在尝试但却无法实现自己需求的脚本示例:
$date = Get-Date -format MMMM-dd-yyyy
$date2 = Get-Date -format yyyyMMdd
$Source = "C:\SOURCE\ROOT"
$Destination1 = "\\netshare\DESTINATION\DATA_May-26-2014"
$Destination2 = "\\netshare\DESTINATION\DATA_May-26-2014-1st"
$Destination3 = "\\netshare\DESTINATION\DATA_May-26-2014-2nd"
$Destination4 = "\\netshare\DESTINATION\DATA_May-26-2014-3rd"
$Destination5 = "\\netshare\DESTINATION\DATA_May-26-2014-4th"
$Destination6 = "\\netshare\DESTINATION\DATA_May-26-2014-5th"
#Check destination path
if (Test-Path $Destination1)
{
#then copy
robocopy $Source $Destination2 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination2)
{
#then copy
robocopy $Source $Destination3 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination3)
{
#then copy
robocopy $Source $Destination4 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination4)
{
#then copy
robocopy $Source $Destination5 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination5)
{
#then copy
robocopy $Source $Destination6 /MIR /Z /E /fft /MAXAGE:$date2
}
else
{
robocopy $Source $Destination1 /MIR /Z /E /fft /MAXAGE:$date2
}
最初我仅使用robocopy来完成类似的目的,但这个复制项目需要文件夹名称包含月份(如“May”),而robocopy并不支持,因此我不得不切换到powershell脚本并结合使用robocopy。
有没有任何想法可以创建一个更好的脚本呢?
Copy-Item -Path $SharedSource -Destination $Destination -Recurse -Force
对我来说效果很好。请注意-Recurse
标志和排除/*.*
。 - Aakash