Ir ao conteúdo

Outro script para organizacao de arquivos pelo cmd


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

Tenho uma remessa de arquivos que recebo mensalmente(cerca de 380mil) Preciso separar em pastas contendo no máximo 2mil por pasta... Hoje preciso fazer na mão queria saber se eu consigo fazer um script que faça essa separação

  • Curtir 1
  • Solução
Postado

Aqui está um vídeo explicando e o código fonte:

 

 

@echo off
:: Batch para dividir Arquivos em Pastas por quantidade

:: Especifique a quantidade de arquivos por pasta aqui:
set NArquivos=2000

:: Especifique Nome Base para as Subpastas aqui
set NBase=Pasta_

:: Especifique Quantida de digitos para o número ex: 3 = Pasta_0022
set Digitos=4

SetLocal EnableDelayedExpansion

chcp 1252 > nul 

If /i exist "%~1" (set "Pasta=%~1") else (set /p "Pasta=Favor informe onde está a pasta: ")

Set ContPasta=1
pushd "%Pasta%"
for /f "delims=" %%a in ('dir /b *.*') do (
set NZero=0000000000000!ContPasta!
set NZero=!NZero:~-%Digitos%!"
if /i not exist "%NBase%!NZero!" md ""%NBase%!NZero!""
move "%%a" "%NBase%!NZero!"& set /a ContArq+=1
if !ContArq! equ %NArquivos% set /a ContPasta+=1 & set /a ContArq=0
)

popd

 

  • Obrigado 1
  • Amei 1
  • 3 anos depois...
Postado

@ricardo_br Teria como no comando inserir a possibilidade de renomear os arquivos?

Digamos que tenho várias imagens e quero separar elas usando o comando acima, porém gostaria também de Renomear seguindo a sequência das imagens. 01, 02, 03...

  • Curtir 1
Postado

@Moozer Veja se é isso, mais teste em uma cópia antes:

@echo off
:: Batch para dividir Arquivos em Pastas por quantidade

:: Especifique a quantidade de arquivos por pasta aqui:
set NArquivos=10

:: Especifique Nome Base para as Subpastas aqui
set NBase=Pasta_

:: Especifique Quantida de digitos para o número ex: 3 = Pasta_0022
set Digitos=4

SetLocal EnableDelayedExpansion

chcp 1252 > nul 

If /i exist "%~1" (set "Pasta=%~1") else (set /p "Pasta=Favor informe onde está a pasta: ")

set DArquivos=%NArquivos%
set CA=0
:Loop
IF not "!NArquivos:~%CA%!"=="" (set /a CA+=1& goto :loop)

Set ContPasta=1
pushd "%Pasta%"
for /f "delims=" %%a in ('dir /b *.*') do (
set NZero=0000000000000!ContPasta!
set NZero=!NZero:~-%Digitos%!
if /i not exist "%NBase%!NZero!" md ""%NBase%!NZero!""
set /a ContArq+=1
set NZero2=000000000!ContArq!
set NZero2=!NZero2:~-%CA%!
move "%%a" "%NBase%!NZero!\!NZero2!%%~xa"
if !ContArq! equ %NArquivos% set /a ContPasta+=1 & set /a ContArq=0
)

popd

 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!