Powershell 和 7zip - 来自多个(子)文件夹的多个文件
Powershell and 7zip - multiple files from multiple (sub)folders
我正在开发一个(非常简单的)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.
使用
7z.exe a -tzip "$dest$($file.basename).zip" $file
你很接近。试试这个 7z.exe a -tzip "$dest$($file.basename).zip" $file
我正在开发一个(非常简单的)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.
使用
7z.exe a -tzip "$dest$($file.basename).zip" $file
你很接近。试试这个 7z.exe a -tzip "$dest$($file.basename).zip" $file