O script Windows UnRar Batch precisa ignorar .part02.rar através das extensões part99.rar

2

Eu tenho dois scripts em lotes de janelas que trabalham para reciclar a pasta em que são colocados e extrair todos os arquivos .rar para a pasta dos arquivos rar.

no entanto, quando uma pasta usa a estrutura:

file.part01.rar
file.part02.rar
file.part03.rar  ect..

o script engasga quando tenta extrair cada um desses arquivos (já que eles correspondem à extensão .rar) e apresenta ao usuário que FileExtract.bla já existe: Sobrescrever? (Sim não ? X vezes o número de partes do arquivo rar (geralmente 20 ou 30 vezes).

Eu tenho tentado descobrir como no meu script em lote primeiro filtrar quaisquer arquivos com extensões part02.rar para part99.rar (mas não part01.rar, pois esse é o arquivo que eu quero para extrair) antes de ser passado para o comando "DO" / unrar.

aqui estão dois arquivos em lote diferentes que funcionam da mesma maneira (e falham da mesma forma nos arquivos part02.rar):

@ECHO OFF &SETLOCAL disableDelayedExpansion
SET "sourcefolder=."
FOR /R "%sourcefolder%" %%a IN (*.r*) DO (
    FOR /f "delims=" %%b IN ('echo %%~xa^|findstr /r "\.r.*"') DO
("C:\Program Files-zipz.exe" x "%%~a")
)

e # 2:

@echo on
FOR /D /r %%F in ("*") DO (
    pushd %CD%  
    cd %%F
       FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files-zipz.exe" x "%%X"
    )
popd
)

Obrigado

    
por James Gaul 26.12.2015 / 06:11

1 resposta

2

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
)
    
por 26.12.2015 / 09:56