Ir para conteúdo
Fórum Script Brasil
  • 0

Manipular arquivo nomeado por data em BAT


Allgusto

Pergunta

Bom dia senhores,

Explicando a situação:

Todos os dias eu gero arquivos de atualização e o software que faz isso usa a data(dia e mês) do sistema para nomear os arquivos.

ex: NOME2501.txt

Porém os arquivos são gerados com a data de vigência sendo o próximo dia, ou seja, se eu gerar os arquivos de atualização hoje(25/01) o arquivo será gerado com o nome de "NOME2601.txt"

O que eu preciso é pegar esse arquivo, copiar para uma pasta e renomear.

Com a data do dia atual, eu consigo fazer isso utilizando essa linha:

" NOME%date:~0,2%%date:~3,2%.txt "

O que eu preciso é somar 1 dia nessa variável date, como eu poderia fazer isso?

E levando em conta que ao gerar o arquivo no dia 28/02, por exemplo, a bate consiga puxar o arquivo pelo nome de "NOME0103.txt" e não "NOME2902.txt"

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Tem que utilizar obrigatoriamente um ficheiro .bat para mudar nome do ficheiro? Não pode ser um programa em c ou python?

Obrigatoriamente não, mas de preferência, porque todos os outros processos que automatizei foi através da .bat, ficaria ao menos padronizado, sabe?!

Mas se em outra linguagem for mais prático, eu tento mudar o que já fiz.

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui de uma forma simples resolver o que eu precisava.

Lógica simples de programação:

Setei duas variáveis:

set dia=%date:~0,2%
set mes=%date:~3,2%
onde o dia tem o valor dos dois dígitos do dia no relógio do sistema;
onde o mês tem o valor dos dois dígitos do mês no sistema;
Depois fiz a variável dia receber o seu próprio valor mais 1 e escrevi a variável;
set /a dia=dia+1
echo %dia%
Usando como exemplo hoje ficaria assim:
Dia = 20
Mes = 06
Dia = 06+1
Dia = 7
Espero que ajude..
Link para o comentário
Compartilhar em outros sites

  • 0

Resolvi esse problema que citei acima de uma forma, (não sei se foi a melhor forma) mas resolveu.

 

Fiz vários testes com IF, para ver em qual mes estamos, e se é o último dia do mês, se for eu atribuo à variável dia o valor 01.

--Primeiro eu pego as variáveis dia e mês e crio uma auxiliar D, pra ser o dia primeiro

:variaveis

set dia=%date:~0,2%
set mes=%date:~3,2%
set d=01

 

--Agora eu faço os testes

REM TESTANDO ULTIMO DIA DO MES


:jan

if %mes% EQU 01 (
if %dia% EQU 31 (
set dia=%d%
set mes=02
goto processo
))
goto fev

:fev

if %mes% EQU 02 (
if %dia% EQU 29 (
set dia=%d%
set mes=03
goto processo
))
goto mar

:mar

if %mes% EQU 03 (
if %dia% EQU 31 (
set dia=%d%
set mes=04
goto processo
))
goto abril

 

e assim sucessivamente até o Dezembro

 

--agora eu preciso corrigir os dias do 1º ao 10º, porque quando vou manipular os dias ele ignora os 0 à esquerda, então:

 

REM CORRIGINDO DO DIA PRIMEIRO AO DECIMO

:zerados

:um

if %dia% EQU 01 (
set dia=02
goto processo
)
goto dois

:dois

if %dia% EQU 02 (
set dia=03
goto processo
)
goto tres

:tres

if %dia% EQU 03 (
set dia=04
goto processo
)
goto quatro

:quatro

if %dia% EQU 04 (
set dia=05
goto processo
)
goto cinco

:cinco

if %dia% EQU 05 (
set dia=06
goto processo
)
goto seis

:seis

if %dia% EQU 06 (
set dia=07
goto processo
)
goto sete

:sete

if %dia% EQU 07 (
set dia=08
goto processo
)
goto oito

:oito

if %dia% EQU 08 (
set dia=09
goto processo
)

:nove

if %dia% EQU 09 (
set dia=10
goto processo
)

:normal
set /a dia=dia+1

:processo
 

-- aqui em processo fica o restante do seu código 

Link para o comentário
Compartilhar em outros sites

  • 0

o meu deu certo , a não ser por um detalhe.. eu preciso dimunuir 5 minutos de cada arquivo gerado.. setei as variaveis.. mas nos primeiros minutos de cada hora , não consigo mostrar o "0" .

exemplo o arquivo que deveria ficar [08-09-2023]---[12-05] ... fica [08-09-2023]---[12-5] 

como fazer para colocar o "0" ?

segue o codigo:

 

set filedate=%date:~0,2%-%date:~3,2%-%date:~6,4%>nul 2>&1
set filedatetime=[%date:~0,2%-%date:~3,2%-%date:~6,4%]---[%time:~0,2%->nul 2>&1
set /a filedatetime1=%time:~3,2%>nul 2>&1
set /a filedatetime2=filedatetime1-5>nul 2>&1
set filedatetime3=%filedatetime%%filedatetime2%]>nul 2>&1
set nomearquivo=%filedatetime3%>nul 2>&1
cd\>nul 2>&1
x: >nul 2>&1

cd x:\Record>nul 2>&1


forfiles /s /M *.h264 /C "cmd /c ren "*.h264" "%nomearquivo%.h264" >nul 2>&1


IF not exist x:\DRX_VIDEOS\"%filedate%" MD x:\DRX_VIDEOS\"%filedate%" >nul 2>&1


robocopy.exe "x:\Record\DVR" "x:\DRX_VIDEOS\%filedate%" /MOV /E /MAXAGE:1 >nul 2>&1

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...