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


2

Eu tenho dois scripts de lote de windows que ambos trabalham para recurse a pasta onde eles 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 combinam com a extensão .rar) e apresenta ao usuário que FileExtract.bla já existe: Sobrescrever? (Sim não ? X vezes o número de partes de arquivo rar (geralmente 20 ou 30 vezes).

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

aqui estão dois arquivos em lotes diferentes que funcionam da mesma maneira (e falham da mesma maneira 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\7-zip\7z.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\7-zip\7z.exe" x "%%X"
    )
popd
)

obrigado

Respostas:


2

o script engasga quando tenta extrair cada um desses arquivos (desde   eles correspondem à extensão .rar) e apresenta ao usuário FileExtract.bla   já existe: Substituir? (Sim não ? X vezes o número de rar   arquivar peças (geralmente 20 ou 30 vezes).

Por que não simplesmente canalizar "N" ao 7z comandos para dizer-lhes escolher o "N" opção para "NÃO" se apresentado com isso?

Eu não tenho certeza se esses comandos sempre começam com o aplicável file.part01.rar primeiro, e depois segue para file.part02.rar, file.part03.rar, e assim por diante, em ordem seqüencial, ou se isso é realmente importante para os arquivos duplicados extraídos do conteúdo.

Se a automação estiver sendo retida somente esta opção a ser selecionada quando o problema existir, então selecione "N" A opção automaticamente deve permitir que os outros arquivos também sejam extraídos e que a automação seja concluída.

Então, o problema é esses arquivos RAR com o parte [02-99] .rar nomes de arquivos extraem arquivos que já existem onde eles estão sendo extraídos, portanto, ele solicita que você queira sobrescrever o arquivo existente ou não.

Se extrair o 01 Primeiro, os arquivos nomeados e, em seguida, tentam todos os nomes de arquivo correspondentes subsequentes, onde ele tem um arquivo de extração sobrescrevendo o conflito, então isso deve funcionar.

Se isso funcionar como esperado, isso tornará muito pequena a alteração 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\7-zip\7z.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\7-zip\7z.exe" x "%%X"
    )
popd
)

É realmente embaraçoso a quantidade de tempo que passei tentando solucionar este problema, há muitas vezes eu sequer pensei sobre scripts como auto-hotkey para enviar continuamente uma tecla "N" como uma correção áspera .... Eu só não posso Acredito que não pensei em sua solução. Funciona perfeitamente! e estava bem na frente do meu rosto .. eu venho do mundo linux onde eu teria resolvido isso muito mais rápido, eu só não pensei em usar lote assim. Muito obrigado!
James Gaul

O StackExchange é uma comunidade linda. Encorajo-o a usá-lo mais tanto para perguntas quanto para respostas, pois você tem tempo para fazê-lo. Fico feliz que você tenha resolvido o seu problema e estou feliz em ajudar!
Pimp Juice IT
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.