Ir ao conteúdo

Bat Arquivo .bat para criar pastas com meses e subpastas com dias


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

Bom dia,

Dei uma pesquisada no fórum para ver se achava um script parecido com o que preciso, ou algum próximo para que pudesse apenas fazer as alterações necessárias, mas não encontrei nenhum que eu conseguisse editar de modo que funcione como eu quero...

O código que tenho atualmente cria apenas as pastas principais, sem as subpastas com os dias de cada mês:

chcp 65001
MD	"01 - Janeiro"
MD	"02 - Fevereiro"
MD	"03 - Março"
MD	"04 - Abril"
MD	"05 - Maio"
MD	"06 - Junho"
MD	"07 - Julho"
MD	"08 - Agosto"
MD	"09 - Setembro"
MD	"10 - Outubro"
MD	"11 - Novembro"
MD	"12 - Dezembro"

Preciso de um script em arquivo .bat que crie pastas e subpastas, com os meses e dias do ano, da seguinte maneira:

- Pasta principal: "01 - Janeiro" > subpastas "01" até "31"

- Pasta principal: "02 - Fevereiro" > subpastas "01" até "28"...

É possível esse tipo de script?

Agradeço desde já a ajuda 🙂

Postado

Bom dia veja se isso resolve pra voce

 

@echo off
setlocal enabledelayedexpansion

rem Defina o caminho onde deseja criar as pastas
set "caminho=C:\Caminho-da-sua-pasta"

rem Loop pelos meses
for %%m in (
    "01 - Janeiro"
    "02 - Fevereiro"
    "03 - Marco"
    "04 - Abril"
    "05 - Maio"
    "06 - Junho"
    "07 - Julho"
    "08 - Agosto"
    "09 - Setembro"
    "10 - Outubro"
    "11 - Novembro"
    "12 - Dezembro"
) do (
    rem Extrai o número do mês
    set "mes=!%%m:~0,2!"

    rem Cria a pasta do mês
    mkdir "%caminho%\%%~nxm" 2>nul

    rem Obtenha o número correto de dias para cada mês
    set "num_dias=31"
    if "!mes!"== "02" set "num_dias=28"
    if "!mes!"== "04" set "num_dias=30"
    if "!mes!"== "06" set "num_dias=30"
    if "!mes!"== "09" set "num_dias=30"
    if "!mes!"== "11" set "num_dias=30"

    rem Loop pelos dias do mês
    for /l %%d in (1,1,!num_dias!) do (
        rem Garante que os números do dia tenham dois dígitos
        set "dia=0%%d"
        set "dia=!dia:~-2!"

        rem Cria a subpasta do dia
        mkdir "%caminho%\%%~nxm\!dia!" 2>nul
    )
)
echo Pastas criadas com sucesso.
pause

 

  • Curtir 3
  • Solução
Postado

@nathangsc No caso você teria que especificar o ano pois a cada ano bissexto (2016 | 2000 | 2024 | 2028) fevereiro tem 29 dias, fora dos anos bissextos são 28. Veja se é isso:

 

@echo off
SetLocal EnableDelayedExpansion

set Ano=2024
chcp 1252 >nul
for %%a in ("01 - Janeiro" "02 - Fevereiro" "03 - Março" "04 - Abril" "05 - Maio" "06 - Junho" "07 - Julho" "08 - Agosto" "09 - Setembro" "10 - Outubro" "11 - Novembro" "12 - Dezembro") do (
                                                                                                                                                                                              set /a Mes+=1
                                                                                                                                                                                              set Dia=31
                                                                                                                                                                                              call :Criar "%%~a"
                                                                                                                                                                                             )

pause
exit

:Criar
xcopy /d:%Mes%-%Dia%-%Ano% ".*" "%temp%" /L 2>nul 1>nul || (
                                                            set /a Dia-=1
                                                            goto :Criar
                                                           )
for /L %%a in (%Dia%,-1,1) do (
                               set DiaZ=0%%a
                               set DiaZ=!DiaZ:~-2!
                               md "%Ano%\%~1\!DiaZ!"
                              )
goto :EOF

 

 

0b4tpy.gif

 

 

  • Curtir 1
  • Obrigado 1
  • 11 meses depois...

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