【问题标题】:Powershell and 7zip - multiple files from multiple (sub)foldersPowershell 和 7zip - 来自多个(子)文件夹的多个文件
【发布时间】:2015-12-25 17:19:07
【问题描述】:

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

类似这样的:

发件人:

f:\backup\user1\file1.bak
f:\backup\user2\file2.bak

收件人:

x:\backupfolder\users\file1.zip
x:\backupfolder\users\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
    }

问题是,在这种情况下,我得到 The specified path is invalid 错误,因为 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。

【问题讨论】:

    标签: powershell compression 7zip


    【解决方案1】:

    你已经接近了。试试这个7z.exe a -tzip "$dest\$($file.basename).zip" $file

    【讨论】:

    • 泰。 7z.exe a -tzip "$dest\$($file.basename).zip" $file 做到了。
    【解决方案2】:

    使用

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

    【讨论】:

    • 为您解答。尝试了你的建议,它创建了一个名为“.zip”的存档,所以仍然不存在....
    • 如果它位于For-EachObject{} 循环中,就像 OPs 代码中所呈现的那样,这将起作用。看起来该操作在他的代码和示例中混合了代码结构,因此造成了混乱。
    • 抱歉这个错误,我一直用$_
    猜你喜欢
    • 2022-01-21
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多