Ir ao conteúdo
  • Cadastre-se

Bat Descompactar arquivos dentro de pastas e subpastas


Ir à solução Resolvido por ricardo_br,

Posts recomendados

@Álvaro Lisboa Para caminhos com acentos brasileiros adicione:

chcp 1252 >nul

em alguma parte no inicio do batch e depois vai em salvar como em "tipo de codificação" coloque "ANSI", ai esse caminho com acentos deve funcionar, agora porque a parte da senha parou de funcionar não sei dizer...

Link para o comentário
Compartilhar em outros sites

@ricardo_br inclui a linha acima mas não teve resultado, o script simplesmente fecha sem nenhuma mensagem, é algum problema com o caminho mesmo!!

  O script está funcionando em qualquer outro caminho que eu uso, vou deixar assim mesmo.

Quanto a senha apaguei e coloquei outra e voltou a funcionar, então beleza.

Vou deixar assim mesmo, gradeço toda a sua atenção @ricardo_br

Link para o comentário
Compartilhar em outros sites

Boa tarde prezados, tudo bem?

 

Estou começando agora a utilizar o Batch para descompactar arquivos, porém não estou conseguindo chegar no script que desejo. Tenho uma pasta zipada, que dentro dela tem diversas subpastas com zips, quero descompactar todos os arquivos diretamente na primeira pasta, sem ficar com subpastas e ao mesmo tempo deletar todos os zips. Alguém consegue me ajudar?

Link para o comentário
Compartilhar em outros sites

@ricardo_br estou usando um script que peguei na conversa aqui, acredito que seja seu. Sim, estou utilizando 7-zip

 

@echo off

set Seven=c:\Program Files\7-Zip\7z.exe

set Senha=teste


for /r "%~dp0" %%a in (*.zip *.rar *.7z) do (
                                             "%Seven%" -p"%Senha%" x -y "%%a" -o"%%~dpa"
                                             del /q "%%a"
                                            ) 

 

estou utilizando ele para descompactar e deletar os zips, porém gostaria de ver como faço para ele puxar todos arquivos para a pasta principal e deletar as subspastas.

Link para o comentário
Compartilhar em outros sites

@Luan Peres Mais simples do que pensei, mais teste em um cópia antes de fazer nos arquivos originais

 

@echo off

:: Informe o local do 7z.exe:
set Seven=C:\Program Files\7-Zip\7z.exe

:Repetir
for /f "delims=" %%a in ('dir /s /b *.zip') do (
                                                "%Seven%" x "%%a" -o"%%~dpa%%~na\"
                                                del /q "%%a"
                                               )
dir /b /s *.zip && goto :Repetir
exit

 

Link para o comentário
Compartilhar em outros sites

@ricardo_br @ricardo_br não consegui aqui. essas informações "Repetir" é pra repetir o abaixo? não entendi muito bem. E outra coisa, está só pra zip? quero pra rar e 7z também.

 

isso?

@echo off

set Seven=C:\Program Files\7-Zip\7z.exe

for /f "delims=" %%a in ('dir /s /b *.zip') do (
                                                "%Seven%" x "%%a" -o"%%~dpa%%~na\"
                                                del /q "%%a"
                                               )
dir /b /s *.zip && goto
exit
 

Link para o comentário
Compartilhar em outros sites

@Luan Peres Isso, o codigo vai repetir enquanto tiver arquvios compactados, só adicionei rar e 7z agora veja em meu teste.

 

@echo off

:: Informe o local do 7z.exe:
set Seven=C:\Program Files\7-Zip\7z.exe

:Repetir
for /f "delims=" %%a in ('dir /s /b *.zip *.rar *.7z') do (
                                                           "%Seven%" x "%%a" -o"%%~dpa%%~na\"
                                                           del /q "%%a"
                                                          )
dir /b /s *.zip *.rar *.7z && goto :Repetir
exit

 

Link para o comentário
Compartilhar em outros sites

@Luan Peres Entendi errado então, eu pensei que tipo você tem um zip assim:

zip1 -> zip2 -> zip3

 

Zip 2 fica dentro de zip 1 e zip 3 fica dentro de zip 2, ai pensei que os zip devessem virar pastas com os arquivos dentro. Da para descompactar tudo para a mesma pasta mais o que deve acontecer se tiver arquivos com nomes iguais?

 

Veja se é isso, porém agora você deve arrastar a pasta base onde estão os zip, rar, 7z para o bat....

 

@echo off

:: É preciso arrastar a pasta base onde estão os arquivos zip rar 7z para este bat
:: Informe o local do 7z.exe:
set Seven=C:\Program Files\7-Zip\7z.exe

if exist "%~1" (if not exist "%~1\" exit) else (exit)

pushd "%~1"

:Repetir
for /f "delims=" %%a in ('dir /s /b *.zip *.rar *.7z') do (
                                                           "%Seven%" x "%%a" -o"%%~dpa%%~na\"
                                                           del /q "%%a"
                                                          )
dir /b /s *.zip *.rar *.7z && goto :Repetir

for /f "delims=" %%a in ('dir /s /b /a-d *.*') do move /y "%%a" "."
for /f "delims=" %%a in ('dir /b /ad') do rd /q /s "%%a"

popd
exit

 

Link para o comentário
Compartilhar em outros sites

@Luan Peres Esse renomeia os arquivos de uma forma similar ao Windows quando você copia arquivos com o mesmo nome para uma pasta. Ex: dentro dos arquivos compactados você tem 3 arquivos chamados Batata.txt

 

Resultado na pasta base:

Batata.txt

Batata (2).txt

Batata (3).txt

 

@echo off

:: É preciso arrastar a pasta base onde estão os arquivos zip rar 7z para este bat
:: Informe o local do 7z.exe:
set Seven=C:\Program Files\7-Zip\7z.exe

if exist "%~1" (if not exist "%~1\" exit) else (exit)

pushd "%~1"

:Repetir
for /f "delims=" %%a in ('dir /s /b *.zip *.rar *.7z') do (
                                                           "%Seven%" x "%%a" -o"%%~dpa%%~na\"
                                                           del /q "%%a"
                                                          )
dir /b /s *.zip *.rar *.7z && goto :Repetir


for /f "delims=" %%a in ('dir /s /b /a-d *.*') do if not exist "%%~nxa" (move "%%a" ".") else (
                                                                                               set Contador=1
                                                                                               call :Renomear "%%~a"
                                                                                              )

for /f "delims=" %%a in ('dir /b /ad') do rd /q /s "%%a"

popd
exit

:Renomear
set /a Contador+=1
if exist "%~n1 (%Contador%).%~x1" (goto :Renomear) else (move "%~1" "%~n1 (%Contador%).%~x1")
goto :EOF

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@ricardo_br caro amigo, bom dia! estava utilizando esse seu ultimo script qe me auxiliou em extrair os arquivos e move-los para a pasta principal, porém fui utilizar com uma pasta grane, em torno de 1gb e com diversas pastas e subpastas dentro, que acabou dando erro ao mover os arquivos para a principal, deixando os nas suas subpastas. Consegue me auxiliar? Tenho dois casos, um o bat após extrair, apontou que o caminho era muito longo para mover o arquivo e o outro foi após extrair, que não encontrou o arquivo para move-lo.

 

Caso tenha algum .bat que sirva só para mover os arquivos, pode ser que me ajude também. Agradeço!

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois...

Olá @ricardo_br, tudo bem? Lendo este tópico, deu pra perceber que você tem grande conhecimento nesses scripts de compactação e descompactação de arquivos. Sabendo desse seu conhecimento, gostaria que pudesse me ajudar num .bat/script que rode no Windows 10 para descompactar arquivos na configuração dos Diretórios abaixo. De modo que o arquivo descompactado do Diretório Nível "2" fique na Raiz do Diretório Nível "1". E assim por diante até descompactar o conteúdo de todos os Diretórios do Nível "0" e seus respectivos Subdiretórios, seguindo o padrão das imagens abaixo. Não sei se a informação é relevante para o Script, mas as Temporadas 01 a 04 têm 22 Episódios cada, e a Temporada 05 tem apenas 08 Episódios.

 

Diretório Nivel "0"

PastaNivel0comTodasasTemporadasdeumaSrie.JPG.d3d1328f341170911634000b0ca34cc2.JPG

 

Diretório Nivel "1"

PasteNvel1comTodososEpisdiosdeumaTemporada.JPG.830f1764e836c7e603be5aea6a91b40b.JPG

 

Diretório Nivel "2"

PastaNvel2comCadaEpisdiosdeumaTemporadacompactadaemvriaspartes.JPG.a3ca0cb09dc60185031c50c1898ea982.JPG

 

 

Link para o comentário
Compartilhar em outros sites

@k_dantas Oi tudo bom? Veja se isso seria o resultado esperado: Nivel 0.gif

 

Teste em um cópia antes de aplicar na pasta verdadeira caso de erro ou comportamento inesperado....

 

Na parte set Fonte= você deve colocar o caminho para o nível 0...

 

@echo off

set Fonte=c:\users\ricar\desktop\Nivel 0

if not exist "%Fonte%" exit

for /f "delims=" %%a in ('dir /b /s "%Fonte%\*.rar"') do rar.exe x -r "%%a" "%Fonte%\"
exit

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!