我正在尝试写下一个脚本,它可以帮助我存档多个子目录中的多个文件。我还需要排除特定文件。 到目前为止,我得到了几行脚本
$files = Get-ChildItem -Recurse -path "D:\path\to\folder" -Exclude *i.jpeg |
Where-Object { $_.FullName -notmatch '\\excludedir($|\\)' }
foreach ($file in $files)
{
C:\Program Files\7-zip\7z.exe" a -t7z -mx=9 -ms=on $file
}
基本上,它以递归方式搜索.jpeg文件的所有子文件夹,并给出我们的列表,不包括那些以'i'.jpeg结尾的文件,让我们说'photoi.jpeg'。 这是有效的,但我无法进入下一步,因为我需要为所有列出的文件运行7zip。
有人可以帮助我吗? 在此先感谢:)
答案 0 :(得分:0)
不确定你是否正在尝试保存一个大的单个拉链,但是我做了类似的事情:
Set-Alias sz "C:\Program Files\7-zip\7z.exe"
$files = Get-ChildItem -Recurse -path "D:\path\to\folder" -Exclude *i.jpeg |
Where-Object { $_.FullName -notmatch '\\excludedir($|\\)' }
foreach ($file in $files)
{
$output = sz a -t7z -mx=9 -ms=on "$File" 2>&1
}
如果我使用命令行选项对其进行了测试,则可能必须修改压缩线。另一个不错的选择是我已经捕获了命令的输出以用于报告目的。
答案 1 :(得分:0)
您需要将文件名非对象传递给7z命令 @listfile 语法可以提供帮助:
Get-ChildItem ...| Where-Object ...| select -expand fullname| out-file alist.txt -encoding utf8
'C:\Program Files\7-zip\7z.exe' a archive.7z -mx=9 -ms=on `@alist.txt
Remove-item .\alist.txt
注意@
之前的反引号