Ir ao conteúdo

Bat .bat para criar pastas para cada arquivo existente e mover


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

Cada arquivo tem um nome diferente dos demais, preciso de um .bat para que o Win10 crie uma pasta exclusiva em um X local com parte do nome de cada arquivo e em seguida coloque cada arquivo na pasta nova criada com o seu nome.

 

EX:

local do arquivo C:\imagens\123456-23-03-2022.pdf

criar pasta          D:\arquivos\123456_1

mover                 C:\imagens\123456-23-03-2022.pdf   para   D:\arquivos\123456_1



Muitíssimo obrigado!!!

Postado

@Inex Qual a lógica para criar as pastas? Seriam os primeiros 6 caracteres do arquivo + Underscore + 1???

 

Se tiver 2 arquivos com os primeiros 6 caracteres iguais eles devem ir para a mesma pasta?

 

C:\imagens\123456-23-03-2022.pdf  -> D:\Arquivos\123456_1

C:\imagens\123456-22-03-2022.pdf  -> D:\Arquivos\123456_1

 

 

Postado

@ricardo_br O nome da pasta teria que ter algum "filtro", para apenas números inteiros anteriores ao primeiro -, porque o numero pode varios de 3 caracteres a 7/8.

Ex:

Para o arquivo 123-23-03-2022.pdf a pasta seria 123_1

Para o arquivo 12345678-23-03-2022.pdf a pasta seria 12345678_1

Sempre com o _1

E arquivos iguais iriam para a mesma pasta!

 

Postado

@ricardo_br Não existe! o _1 é um padrão de pastas para esses arquivos em pdf.

Seria interessante também, caso a pasta já exista, ele apenas mover o arquivo.

 

 

  • Solução
Postado

Veja se é isso. só trocar na parte "set Fonte=" e set "Destino=" para o local que você quiser...

 

XhYDrPP.gif

 

 

 

 

@echo off

set Fonte=%userprofile%\desktop\Fonte
set Destino=%userprofile%\desktop\Destino

IF /i not exist "%Destino%" md "%Destino%"

for /f "tokens=1* delims=-" %%a in ('dir /b /a-d "%Fonte%"') do call :CriarPasta "%%~a" "%%~b"

exit

:CriarPasta
set "Pasta=%~1_1"
If /i not exist "%Destino%\%Pasta%" md "%Destino%\%Pasta%"
move "%Fonte%\%~1-%~2" "%Destino%\%Pasta%"
goto :EOF

 

Postado

Se a fonte fosse: Fonte\ ABC123456-23-03-2022.pdf o resultado esperado seria:

 

Destino\ABC123456\ABC123456-23-03-2022.pdf

ou

Destino\123456\ABC123456-23-03-2022.pdf

 

Fiquei meio na dúvida depois de reler: "O nome da pasta teria que ter algum "filtro", para apenas números inteiros anteriores ao primeiro -, porque o numero pode varios de 3 caracteres a 7/8."

 

  • 9 meses depois...
Postado

@ricardo_br usei o script mas os arquivos da FONTE estão sendo criadas as pastas dentro de DESTINO porém o arquivo não esta dentro da pasta criada em DESTINO, apenas criou a pasta e só. Preciso criar as pastas com nome do arquivo e inserir o arquivo dentro da pasta com seu nome... no meu caso sao arquivos .xlsx

usei o mesmo script, tem alguma resalva para me auxiliar Ricardo?

 

@echo off

set Fonte=%userprofile%\desktop\Fonte
set Destino=%userprofile%\desktop\Destino

IF /i not exist "%Destino%" md "%Destino%"

for /f "tokens=1* delims=-" %%a in ('dir /b /a-d "%Fonte%"') do call :CriarPasta "%%~a" "%%~b"

exit

:CriarPasta
set "Pasta=%~1"
If /i not exist "%Destino%\%Pasta%" md "%Destino%\%Pasta%"
move "%Fonte%\%~1-%~2" "%Destino%\%Pasta%"
goto :EOF

Postado

@ricardo_br eles estão assim na pasta FONTE
 

image.png.4affba14478540276a7ec8d65b3530ea.png

Preciso que a pasta tenha o nome dela com os 4 primeiros caracteres de cada arquivo, quando for igual que envie os arquivos para a mesma pasta, pois os 4 primeiros caracteres que determinam o local do arquivo..

Postado

@Darlan Heberle

Veja se é isso:

https://pastebin.com/raw/c3kHRKBR

 

@echo off

set Fonte=%userprofile%\desktop\Fonte
set Destino=%userprofile%\desktop\Destino

IF /i not exist "%Destino%" md "%Destino%"
if not exist "%Fonte%" exit

for /f "Delims=" %%a in ('dir /b /a-d "%Fonte%"') do call :CriarPasta "%%~a"

exit

:CriarPasta
set "Pasta=%~1"
set "Pasta=%Pasta:~0,4%"
If /i not exist "%Destino%\%Pasta%" md "%Destino%\%Pasta%"
move "%Fonte%\%~1" "%Destino%\%Pasta%"
goto :EOF 

 

  • 6 meses depois...
Postado

@ricardo_br Bom dia. Usei este código aqui e consegui criar as pastas e mover os arquivos:

Em 11/01/2023 às 13:59, ricardo_br disse:
@echo off

set Fonte=%userprofile%\desktop\Fonte
set Destino=%userprofile%\desktop\Destino

IF /i not exist "%Destino%" md "%Destino%"
if not exist "%Fonte%" exit

for /f "Delims=" %%a in ('dir /b /a-d "%Fonte%"') do call :CriarPasta "%%~a"

exit

:CriarPasta
set "Pasta=%~1"
set "Pasta=%Pasta:~0,4%"
If /i not exist "%Destino%\%Pasta%" md "%Destino%\%Pasta%"
move "%Fonte%\%~1" "%Destino%\%Pasta%"
goto :EOF

Mas preciso que as pastas tenham o nome completo do arquivo, apenas sem a extensão. Exemplo: CLUBE DO HARDWARE.pdf vira uma pasta chamada CLUBE DO HARDWARE.

 

Se você pudesse postar um código que fizesse isso, eu agradeceria muito

Postado

@Pedro da C. e Silva veja se é isso:

 

@echo off

set Fonte=%userprofile%\desktop\Fonte
set Destino=%userprofile%\desktop\Destino

IF /i not exist "%Destino%" md "%Destino%"
if not exist "%Fonte%" exit

for /f "Delims=" %%a in ('dir /b /a-d "%Fonte%"') do call :CriarPasta "%%~a"

exit

:CriarPasta
set "Pasta=%~n1"
If /i not exist "%Destino%\%Pasta%" md "%Destino%\%Pasta%"
move "%Fonte%\%~1" "%Destino%\%Pasta%"
goto :EOF 
 

 

  • Curtir 1

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