我有一个目录(2022
),其中包含以日期作为名称的子目录(20220101
、20220102
等)。
在每个子目录中,我都有我想归档的文件。这些文件的名称以L0283
或L0284
开头,然后是数字和日期。例如:L0284408.20220101.2123
。我想使用的过滤器是L028*
。我想将每个文件归档到它们当前所在的同一个文件夹中,并使用名为400401_L028**3**408archive.zip
或400401_L028**4**408archive.zip
的压缩文件夹,具体取决于它是L0283
还是L0284
文件。
该存档已经存在,我可以写一个脚本,删除它第一,但如果我可以覆盖它,那么它会保存一些时间。我将重新运行这个脚本在多个根目录。
我研究了powershell的压缩存档功能,但我不知道如何添加一个过滤器的文件名,并有一个不同的输出名称,加上0283
与0284
是逃避我。
2条答案
按热度按时间gpnt7bae1#
你有PKZip吗?这是工作:
它们在
2022/
的子目录中查找并存档与模式匹配的任何级别的文件。1hdlvixo2#
我更喜欢使用
System.IO.Compression
库以获得灵活性。(每个子文件夹一个),因此我建议在每次写入后使用Dispose()
关闭zip。它的效率很低,因为每次写入都要打开和关闭归档。为了简单起见,我重复了代码,但是如果我可以控制zip文件结构,我会重写这个脚本,创建一个包含所有文件的zip,同时保留相对路径,就像我在this answer中提到的那样。
编辑:我添加了一个过滤器来防止压缩 *.zip文件:
| ?{$_.Name -notlike '*.zip'}
请尝试使用此过滤器。