Estou tentando compactar usando o PowerShell, mas não estou excluindo os arquivos listados no arquivo excluded_paths
. Quero excluir especialmente todas __pycache__
as ocorrências de pastas que podem ser aninhadas em diferentes níveis da minha base de código python. Atualmente tudo é compactado, incluindo os arquivos e pastas que deveriam ser excluídos.
$excluded_paths = @(
"${parent_folder}/.vscode/*",
"${parent_folder}/.git/*",
"${parent_folder}/temp/*",
"${parent_folder}/resources/documentation/*",
"${parent_folder}/**/useful/*",
"${parent_folder}/scripts/*",
"${parent_folder}/*.template.*",
"${parent_folder}/*TODO.*",
"${parent_folder}/$(Get-Item -Path $MyInvocation.MyCommand.Path).Name"
)
$exclude_pycache = Get-ChildItem -Path $parent_folder -Recurse -Directory -Filter "__pycache__" | ForEach-Object { $_.FullName }
$excluded_paths += $exclude_pycache
Pause
$winrar_path = "C:\Program Files\WinRAR\WinRAR.exe"
#$exclusion_switches = $excluded_paths | ForEach-Object { "-x'$_'" }
#& $winrar_path a -r -ep1 $exclusion_switches "$output_zip" "${parent_folder}\*"
$exclusion_string = $excluded_paths -join ' '
& $winrar_path a -r -ep1 "-x$exclusion_string" "$output_zip" "${parent_folder}\*"
Eu tentei isso:
$exclusion_switches = $excluded_paths | ForEach-Object { "-x'$_'" }
& $winrar_path a -r -ep1 $exclusion_switches "$output_zip" "${parent_folder}\*"
e tentei este:
$exclusion_string = $excluded_paths -join ' '
& $winrar_path a -r -ep1 "-x$exclusion_string" "$output_zip" "${parent_folder}\*"
Mesmo um exemplo simples:
& $winrar_path a -r -x__pycache__ "$output_zip" "${parent_folder}\*"
não funciona. Ele fecha, mas não exclui todas as __pycache__
pastas.
Ok, eu tentei
& $winrar_path a -r "-x*__pycache__*" "$output_zip" "${parent_folder}\*"
e funcionou, mas a documentação do WinRAR não mencionou citá-lo.
O que estou fazendo de errado?