Я хотел бы заархивировать каталоги, которые соответствуют шаблону регулярного выражения (/[0-9]{4}/
). 7z поддерживает это?
Это не находит подходящие каталоги:
PS> 7z a -t7z C:\Users\<user>\Desktop\Archive.7z '/[0-9]{4}/'
Я хотел бы заархивировать каталоги, которые соответствуют шаблону регулярного выражения (/[0-9]{4}/
). 7z поддерживает это?
Это не находит подходящие каталоги:
PS> 7z a -t7z C:\Users\<user>\Desktop\Archive.7z '/[0-9]{4}/'
7-Zip не использует системный анализатор подстановочных знаков. 7-Zip не следует архаичному правилу, по которому . означает любой файл. 7-Zip угощает . как совпадает с именем любого файла, который имеет расширение. Для обработки всех файлов вы должны использовать подстановочный знак *.
# Get only objects with names consisting of 4 characters
[array]$Folders = Get-ChildItem -Path '.\' -Filter '????' |
# Filter folders matching regex
Where-Object {$_.PsIsContainer -and $_.Name -match '[0-9]{4}'} |
# Get full paths. Not really needed,
# PS is smart enough to expand them, but this way it's more clear
Select-Object -ExpandProperty Fullname
# Compress matching folders with 7Zip
& '7z.exe' (@('a', '-t7z', 'C:\Users\<user>\Desktop\Archive.7z') + $Folders)