Ir ao conteúdo
  • Cadastre-se

Bat Geração de arquivo via bat com data do dia anterior


Ir à solução Resolvido por Marcos Pereira Simões,

Posts recomendados

Em 10/10/2022 às 19:08, ricardo_br disse:

veja se é isso:

 

@echo off
:: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6
:: Explicando:
:: Se for Segunda subtrai 3 dias da data de hoje para pegar a data de sexta-feira
:: Se for Domingo subtrai 2 dias da data de hoje para pegar a data de sexta-feira
:: se for Qualquer outro dia subtrai 1 dia da data de hoje:
for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do (
                                                                          if %%a EQU 1 (
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 0 (
                                                                                        Powershell -command "(get-date).adddays(-2).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-2).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       ) 
                                                                          if %%a GTR 1 (
                                                                                        Powershell -command "(get-date).adddays(-1).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-1).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                         )

 

@ricardo_brboa tarde meu camarada!

 

Pra ilustrar...
dia 13/10 (qui) - gerei arquivo de data de 10/10 (seg)
dia 14/10 (sex) - gerei arquivo de data de 11/10 (ter)

 

dia 17/10 (seg) devo gerar arquivo de data de 12/10 (qua)
dia 18/10 (ter)   devo gerar arquivo de data de 13/10 (qui)
dia 19/10 (qua) devo gerar arquivo de data de 14/10 (sex)

e assim por diante (sempre desconsiderando sábado e domingo)

o esquema acima que me passou atende isso?

Link para o comentário
Compartilhar em outros sites

Veja se está certo agora, subtrai 3 dias da data de hoje desconsiderando sábado e domingo:

 

@echo off
:: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6
:: Explicando:
:: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira
:: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira
:: se for Qualquer outro dia subtrai 3 dia da data de hoje:
for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do (
                                                                          if %%a EQU 1 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 0 (
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       ) 
                                                                          if %%a GTR 1 (
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                         )

 

Link para o comentário
Compartilhar em outros sites

@ricardo_brbom dia!
Então, ontem eu rodei a bat e funcionou certinho, ou seja dia 17 e gerou o arquivo de datas com data de 12/10/2022 , ou seja, com 3 dias atrás desconsiderando o sábado e domingo, exatamente como eu queria.

Qua, Qui, Sex, Sáb, Dom, Seg

12     13    14   15     16     17

Porém seguindo minha lógica, hoje dia 18 deveria gerar dia 13, porém gerou 15 (Sábado).

Link para o comentário
Compartilhar em outros sites

@Marcos Pereira Simões Sim, eu errei. Acho que agora tá certo:

 

@echo off
:: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6
:: Explicando:
:: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira
:: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira
:: se for Qualquer outro dia subtrai 3 dia da data de hoje:
for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do (
                                                                          if %%a EQU 1 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 2 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 3 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 0 (
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       ) 
                                                                          if %%a GTR 4 (
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                         )

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Marcos Pereira Simões disse:

@ricardo_brgod..
Muito bom, certinho.
valeu

 

agora, Marcos Pereira Simões disse:

 

@ricardo_brmano, uns tempos atrás você me ajudou com uma bat (anexa) que compactava arquivos e que inclusive ignorava sábados e domingos.
Me ajuda, com base nessa bat anterior que você até corrigiu.
Pergunta: é possível aplicar a essa bat anexa a mesma regra para compactar?
Tipo gero os arquivos na segunda (17/10) e quando compactar no nome do arquivo iria a data de 14/10 sexta-feira.

Compactar.txt

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Em 18/10/2022 às 10:55, ricardo_br disse:
@echo off
:: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6
:: Explicando:
:: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira
:: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira
:: se for Qualquer outro dia subtrai 3 dia da data de hoje:
for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do (
                                                                          if %%a EQU 1 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 2 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 3 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 0 (
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       ) 
                                                                          if %%a GTR 4 (
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                         )

@ricardo_brFala mano! beleza?
Cara, esse código acima só está funcionando se no lugar do GTR 4 eu trocar por EQU 4.
 

Link para o comentário
Compartilhar em outros sites

Em 14/10/2022 às 19:08, ricardo_br disse:

Veja se está certo agora, subtrai 3 dias da data de hoje desconsiderando sábado e domingo:

 

@echo off
:: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6
:: Explicando:
:: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira
:: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira
:: se for Qualquer outro dia subtrai 3 dia da data de hoje:
for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do (
                                                                          if %%a EQU 1 (
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                          if %%a EQU 0 (
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       ) 
                                                                          if %%a GTR 1 (
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'"
                                                                                        Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'"
                                                                                       )
                                                                         )

 

@ricardo_brboa tarde meu amigo!
Cara, tô com uma situação meio louca.
Quando eu rodo essa bat, gera certinho como eu quero, mas tem um detalhe que demorei pra conseguir encontrar.
O arquivo está sendo gerado com encoding UCS-2 LE BOM, mas esse arquivo está sendo rejeitado pelo sistema, pois o devido teria que ser UTF-8.

O código abaixo que você fez pra mim também, gera UTF-8.

 

@echo off

SetLocal EnableDelayedExpansion


for /f "skip=1 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" -v "sShortDate"') do set FormatoData=%%a

FOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,4!"=="yyyy" set "PAno=%%a,4"
FOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,2!"=="mm" set "PMeses=%%a,2"
FOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,2!"=="dd" set "PDias=%%a,2"

set DataAtual=!Date:~%PAno%!!Date:~%PMeses%!!Date:~%PDias%!
set Ano=!Date:~%PAno%!
set Mes=!Date:~%PMeses%!
set Dia=!Date:~%PDias%!

:: MesNu e DiaNu são data do Mês e Dia sem 0 na frente

set /a MesNu=10000%Mes% %% 10000
set /a DiaNu=10000%Dia% %% 10000
set /a AnoNu=%Ano%

@echo off
Powershell (get-date).adddays(-3).tostring('yyyyMMdd')>"C:\Users\marcos.psimoes\Downloads\Marcos\Data.txt"
Powershell (get-date).adddays(-3).tostring('yyyyMMdd')>>"C:\Users\marcos.psimoes\Downloads\Marcos\Data.txt"

Exit

:MesAnterior

IF !MesNu! EQU 1 (set MesNu=12& set /a AnoNu=!AnoNu! - 1) else (set /a MesNu-=1)

xcopy . temp /l /i /d:!MesNu!-!Contador!-!AnoNu! > nul 2>&1
IF /i !Errorlevel! EQU 0 (set DiaNu=!Contador!) else (Set /a Contador=!Contador!-1 & goto :MesAnterior)
goto :EOF
 

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!