the script chokes as it tries to extrtact each of these files (since they match .rar extension) and presents the user with FileExtract.bla already exists: Overwrite? (Y)es / (N)o ? X times the number of rar archive parts (often 20 or 30 times).
Por que não simplesmente direcionar "N" para os comandos 7z
para dizer a eles que escolham a opção "N" para "NO" se apresentado com ele?
Não tenho certeza se esses comandos sempre começam com o file.part01.rar
aplicável primeiro e, em seguida, são movidos para file.part02.rar
, file.part03.rar
e assim por diante, em ordem sequencial, ou se isso é realmente importante para o arquivos duplicados extraíram o conteúdo.
Se a automação estiver sendo suspensa apenas para selecionar essa opção quando o problema existir, a seleção dessa opção "N" automaticamente permitirá que os outros arquivos também sejam extraídos e que a automação seja terminar.
Portanto, o problema é que esses arquivos RAR com os nomes de arquivos part [02-99] .rar extraem arquivos que já existem onde estão sendo extraídos, para que ele deseje sobrescrever o arquivo existente ou não.
Se ele extrair os arquivos nomeados de 01 primeiro e, em seguida, tentar todos os nomes de arquivos correspondentes subsequentes em que ele tiver um conflito de substituição de arquivos de extração, isso deverá funcionar.
Se isso funcionar como esperado, isso fará com que seja mínima a mudança necessária para a lógica do script em lote (veja os exemplos abaixo).
# 1
@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "sourcefolder=."
FOR /R "%sourcefolder%" %%a IN (*.r*) DO (
FOR /f "delims=" %%b IN ('echo %%~xa^|findstr /r "\.r.*"') DO
(ECHO N | "C:\Program Files-zipz.exe" x "%%~a")
)
# 2
@echo on
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
ECHO N | "C:\Program Files-zipz.exe" x "%%X"
)
popd
)