Powershell和7zip - 来自多个(子)文件夹的多个文件

时间:2015-09-28 12:49:44

标签: powershell compression 7zip

我正在开发一个(非常简单的)PowerShell脚本,它必须将多个文件(在这种情况下为.bak文件)从多个子文件夹压缩到目标文件夹。

这样的事情:

自:

F:\备份\ USER1 \ file1.bak
f:\ backup \ user2 \ file2.bak

致:

X:\ backupfolder \用户\ file1.zip
X:\ backupfolder \用户\ file2.zip

脚本:

$path = "f:\backup\"
$dest = "x:\backupfolder\users\"
$mask = "file*.bak"

$days = 1

$files = dir $path -Recurse -Include $mask | where {
    ($_.LastWriteTime -gt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$mins)) -and ($_.psIsContainer -eq $false)
    }

ForEach ($file in $files) 
    {
    7z.exe a -tzip "$dest\$file.name.zip" $file
    }

问题是,在这种情况下,我得到指定的路径无效错误,因为7zip尝试以此形式创建存档

x:\backupfolder\users\f:\backup\user1\file1.bak.name.zip

如果我试试这个:

7z.exe a -tzip "$dest\$_.basename.zip" $file

我获得了一个存档x:\ backupfolder \ users \ .basename.zip

我想要这个脚本所做的就是将文件压缩文件(file1.bak)到一个名为(file1.zip)的存档到我告诉它的文件夹。

我做错了什么?

TYVM。

2 个答案:

答案 0 :(得分:2)

你关闭了。试试这个7z.exe a -tzip "$dest\$($file.basename).zip" $file

答案 1 :(得分:1)

使用

7z.exe a -tzip "$dest\$($file.basename).zip" $file