Jump to content
Fórum Script Brasil
  • 0

Manipular arquivo nomeado por data em BAT


Allgusto

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...