我在寻找什么?
我正在尝试使用Powershell递归复制文件。问题是,我使用此命令来检测带有日期的文件:
$dir = "C:\Folder"
$Latest = Get-ChildItem -Path $dir | where {$_.LastWriteTime -gt (Get-Date).AddDays(-30)}
echo $Latest
现在我需要做的事情:
复制文件
我只需要复制验证此日期条件的文件。
在文件夹上设置不同的条件
我想在子文件夹上设置不同的条件。
例如,我想为Subfolder1
和-30到Subfolder2
你们有没有想过这个?我看到某个地方我们可以用Json文件设置它,但我没有找到如何做到这一点。
修改
我现在正在尝试添加类似| ForEach-Object {copy-item $_ $to}
的内容,但我遇到了错误。你知道我怎么处理它?
答案 0 :(得分:1)
这样的事情可能会发生
$addDays = @{Subfolder1 =-7; Subfolder2=-30}
$dir = "C:\Folder"
$Latest = Get-ChildItem -Path $dir | where {$_.LastWriteTime -gt (Get-Date).AddDays($addDays[$_.Name])}
echo $Latest
这样做的要点是创建一个可以在where子句中使用的hasharray,用项目名称替换添加的天数
修改强>
考虑到您的评论,数组项目的选择变得更加复杂,但可以按照以下方式完成
$addDays = @{Subfolder1 =-7; Subfolder2=-30}
$dir = "C:\Folder\"
Get-ChildItem -Path $dir -Recurse -File |
where {$_.LastWriteTime -gt (Get-Date).AddDays($addDays[$_.DirectoryName -replace [Regex]::Escape($dir) -replace "\\.*$"])}