使用json文件递归复制文件以为文件夹提供条件

时间:2018-03-06 10:08:13

标签: powershell copy

我在寻找什么?

我正在尝试使用Powershell递归复制文件。问题是,我使用此命令来检测带有日期的文件:

$dir = "C:\Folder"
$Latest = Get-ChildItem -Path $dir | where {$_.LastWriteTime -gt (Get-Date).AddDays(-30)} 
echo $Latest 

现在我需要做的事情:

复制文件

我只需要复制验证此日期条件的文件。

在文件夹上设置不同的条件

我想在子文件夹上设置不同的条件。 例如,我想为Subfolder1和-30到Subfolder2

将AddDays条件设置为-7

你们有没有想过这个?我看到某个地方我们可以用Json文件设置它,但我没有找到如何做到这一点。

修改

我现在正在尝试添加类似| ForEach-Object {copy-item $_ $to}的内容,但我遇到了错误。你知道我怎么处理它?

1 个答案:

答案 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 "\\.*$"])}