我正在使用以下内容将文件复制/移动到存档文件夹中。
稍后它将适用于下拉ISS日志并扩展为压缩它们。
我的问题是:
Copy-Item $Somefile –Destination $SomeLocation
在复制期间重命名的文件中的结果代替了我想要复制到的目录。
我已经添加了一些测试路径语句来为我创建目录,但我知道PS应该可以通过额外的开关或定义来做到这一点吗?
#Declare Source and Destination
$Dest = $env:USERPROFILE+"\Desktop\H drive"
$SourceLocation = “H:”
ForEach ($SourceSubDir In Get-ChildItem $SourceLocation -Directory){
#Various Sub Directories Transposed to Destination
$DestSubDir = $SourceSubDir.Fullname.Replace($SourceLocation, $Dest)
#Create a Filtered List of Files
$TargetFiles = Get-ChildItem $SourceSubDir.FullName
#Loop Through and Move Filtered Files
ForEach($File In $TargetFiles){
$LastMonth = $((Get-Date).AddMonths(-1))
$DateModifiedDir = $($DestSubDir+'\'+$LastMonth.ToString('yyyy\,M')+'Archive')
If($File.LastWriteTime.Month -eq $LastMonth.Month){
#Create Subdirectory if not Existant
If(-Not(Test-Path $DestSubDir)){
New-Item $DestSubDir -ItemType Directory
}
#Create Date Modified Subdirectory if not Existant
If(-Not(Test-Path $DateModifiedDir)){
New-Item $DateModifiedDir -ItemType Directory
}
Copy-Item $File.FullName –Destination $DateModifiedDir -WhatIf
}
}
}
答案 0 :(得分:2)
如果目标是文件夹:始终附加一个尾部反斜杠,以防止在目标文件夹丢失的情况下重命名复制的项目。
$dst = "$env:USERPROFILE\Desktop\H drive"
$src = "H:"
Get-ChildItem $src | Copy-Item -Destination "$dst\"
但是,查看您的脚本不会robocopy
成为此任务的更好选择吗?
$src = 'H:\'
$dst = "$env:USERPROFILE\Desktop\H drive\{0:yyyy,MM}" -f $now.AddMonths(-1)
$now = Get-Date
$start = $now.AddMonths(-1).ToString("yyyyMM01")
$end = $now.AddDays(-($now.Day)).ToString("yyyyMMdd")
& robocopy $src $dst /s /maxage:$start /minage:$end