Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 每天将x天以前的文件压缩到文件夹中_Powershell - Fatal编程技术网

Powershell 每天将x天以前的文件压缩到文件夹中

Powershell 每天将x天以前的文件压缩到文件夹中,powershell,Powershell,因此,我试图通过一个文件夹,将任何修改过的30天的文件压缩到一个名为MM/dd/yyyy的文件中 我一直想用这个 for ($i=0; $i -le 30; $i++) { $Date = get-date -format d((get-date).adddays(-$i)) get-childitem "\\Directory\*" | where-object {$_.LastWriteTime -eq $date} } 但是使用它只能得到日期时间00:00,并且当时没有创建或修改任何内

因此,我试图通过一个文件夹,将任何修改过的30天的文件压缩到一个名为MM/dd/yyyy的文件中

我一直想用这个

for ($i=0; $i -le 30; $i++) 
{
$Date = get-date -format d((get-date).adddays(-$i))
get-childitem "\\Directory\*" | where-object {$_.LastWriteTime -eq $date}
}
但是使用它只能得到日期时间00:00,并且当时没有创建或修改任何内容。我需要完全检查当天创建的任何内容

我怎样才能让它在当天的任何时候而不是特定的时间返回任何创建或修改的内容

我会用它将文件压缩到一个文件夹中,但这不是我被卡住的地方

Add-Type -Assembly "System.IO.Compression.FileSystem"
[System.IO.Compression.ZipFile]::CreateFromDirectory($Dir, $DirZip)
谢谢,
Andrew

使用equals比较,它严格地寻找精确匹配。相反,您应该检查天数范围,您可以使用大于和小于来执行此操作

Get-ChildItem "\\Directory\*" | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-$i) -and $_.LastWriteTime -lt (Get-Date).AddDays(-$i+1) }

如果我这样做的话,它会返回所有不到30天的内容,我将无法根据日期将它们压缩到单独的文件夹中。这就是为什么我使用for循环,这样它会返回目录中1天以前的每个文件,然后它会将它压缩到一个带有该日期的文件夹中,然后继续到2天以前,依此类推,直到30天以前。谢谢,在这种情况下,您只需要指定一个范围(使用gt/lt)而不是eq。我将在答案中更新我的示例。