我有一个脚本可以根据日期获取文件并将它们压缩成一个包。我如何单独压缩文件(可能是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
}
提前致谢
答案 0 :(得分:1)
好的,花了一些时间,但我明白了。有一些问题。您需要替换以下内容:
Zip C:\Users\skochkr\Desktop\TEST.zip $Files
If(Test-Path C:\Users\lostd\Desktop\TEST.zip)
{Remove-Item $Files2}
与
foreach ($File in $Files)
{
Set-Location "C:\Users\lostd\Documents\purge\"
$Zipname = $File.Name.Replace(".", "-")
Zip C:\Users\lostd\Documents\purge\$zipname $File
}
sleep 5
foreach ($File in $Files)
{
Remove-Item -Force $File
}
这将单独压缩$Files
中的每个文件(而不是制作一个包含所有内容的zip文件),同时保留相同的名称和扩展名类型。压缩文件的目标也需要设置到所需的位置,否则压缩文件将被发送到7-Zip所在的文件夹。
答案 1 :(得分:0)
$ Files2上的错误是你的lt / gt翻转错误。
你说的LastWriteTime比10天前更早(大于),而且不到20天前,这总是假的。我相信你想要翻转这两个文件,这样你就可以获得LastWriteTime小于10天前的文件,但是比20天前更早(大于)。
至于捆绑它们,您能提供更多关于如何捆绑它们的信息/说明,以及文件应该去哪里吗?