Loops 如何在powershell中压缩单个文件

Loops 如何在powershell中压缩单个文件,loops,powershell,zip,7zip,code-cleanup,Loops,Powershell,Zip,7zip,Code Cleanup,我有一个脚本,可以根据日期将文件打包。我如何将文件单独压缩(可能是foreach)并使它们保持在同一目录中?我在$FileSet2上也遇到了一个错误 Function Zip { Param ( [string]$FileZip , [string[]]$NeedsZipping ) $Directory = Get-Location Set-Location "C:\Users\lostd\Desktop

我有一个脚本,可以根据日期将文件打包。我如何将文件单独压缩(可能是foreach)并使它们保持在同一目录中?我在$FileSet2上也遇到了一个错误

Function Zip
{
    Param
    (
        [string]$FileZip
        ,
        [string[]]$NeedsZipping
    )

    $Directory = Get-Location
    Set-Location "C:\Users\lostd\Desktop\7-ZipPortable\"
    .\7zG.exe A -tzip $FileZip $NeedsZipping | Out-Null
    Set-Location $Directory
}

$filename = "tester"
$CurrentTime = Get-Date
$DaySet1 = "5"
$DaySet2 = "10"
$TargetFolder = "C:\Users\lostd\Documents\*.*"
$LastMod = $CurrentTime.AddDays(-$DaySet1)
$LastMod2 = $CurrentTime.AddDays(-$DaySet2)
$FileSet1 = Get-Childitem $TargetFolder -Recurse | Where {$_.LastMod -lt "$LastMod2"}
$FileSet2 = Get-Childitem $TargetFolder -Recurse | Where {$_.LastMod -gt $LastWrite -AND $_.LastMod -lt $LastMod2}  
#$FileSet1

Zip C:\Users\lostd\Desktop\TEST.zip $FileSet1

If(Test-Path C:\Users\lostd\Desktop\TEST.zip)
{
    Remove-Item $FileSet2
}

提前感谢

在$Files2上的错误是您的lt/gt翻转错误

你说的LastWriteTime比10天前的时间长,比20天前的时间短,这是错误的。我相信您希望将这两种情况颠倒过来,以便获得LastWriteTime不到10天前但比20天前更老(更大)的文件


至于绑定它们,您能否提供更多信息/说明,说明您希望如何绑定它们,以及文件应该放在哪里?

$Files2上的错误是您的lt/gt翻转错误

你说的LastWriteTime比10天前的时间长,比20天前的时间短,这是错误的。我相信您希望将这两种情况颠倒过来,以便获得LastWriteTime不到10天前但比20天前更老(更大)的文件


至于捆绑它们,你能提供更多信息/说明你想如何捆绑它们,以及文件应该放在哪里吗?

好的,花了一些时间,但我弄明白了。有一些问题。您需要更换以下部件:

Zip C:\Users\skochkr\Desktop\TEST.zip $Files
If(Test-Path C:\Users\lostd\Desktop\TEST.zip)
    {Remove-Item $Files2}


这将分别压缩
$Files
中的每个文件(而不是制作一个包含所有内容的压缩文件),同时保持相同的名称和扩展名类型。压缩文件的目的地也需要设置为所需的位置,否则压缩文件将被发送到7-Zip所在的文件夹。

好的,这需要一些时间,但我已经解决了。有一些问题。您需要更换以下部件:

Zip C:\Users\skochkr\Desktop\TEST.zip $Files
If(Test-Path C:\Users\lostd\Desktop\TEST.zip)
    {Remove-Item $Files2}


这将分别压缩
$Files
中的每个文件(而不是制作一个包含所有内容的压缩文件),同时保持相同的名称和扩展名类型。压缩文件的目标也需要设置为所需的位置,否则压缩文件将被发送到7-Zip所在的文件夹。

现在,
$file
中的所有文件都压缩到一个文件中。我希望所有符合
$File
标准的文件都单独压缩。我认为最好的方法是将
$File
$File2
放入一个数组,然后使用
foreach
循环。我想把它们放在原来所在的同一个目录中。我只是不知道怎么做。现在,
$File
中的所有文件都压缩到一个文件中。我希望所有符合
$File
标准的文件都单独压缩。我认为最好的方法是将
$File
$File2
放入一个数组,然后使用
foreach
循环。我想把它们放在原来所在的同一个目录中。我只是不知道怎么做。