Jump to content
Fórum Script Brasil
  • 0

Usando .BAT para pegar um arquivo recente para inspecionar.


Wesley Venancio

Question

Olá pessoal! 

Estou tentando usar BAT para fazer uma tarefa da seguinte forma: Ele lê um arquivo, procura uma caractere especifico nas ultimas 2 linhas, se encontrou ele abre uma mensagem e grava em txt um arquivo com as 2 ultimas linhas que ele encontrou.

Eu já tenho um código que faz isso e já uso algum tempo, mas agora o software que gera esse arquivo que preciso ler, ele muda de nome todo o dia com o mês e dia que está gravando. (MM_04_DD_13.csv)

O que eu preciso é que ele pegue o arquivo mais recente e leia para achar o caráter especifico.

Por favor vocês podem me ajudar?  

@echo off

SetLocal EnableDelayedExpansion

:: Informe aqui o local do arquivo onde quer copiar as últimas 20 linhas:
set Arquivo=C:\Users\we\Desktop\Ler nok na 30\MM_04_DD_13.csv

:: Informe a quantidade de linhas que você quer:
set Linhas=2

:: Informe um termo D pesquisado:
set Termo=N

::Informe o arquivo onde vai ser armazenado o resultado
set Resultado=Ocorrência de NOK.txt

::Informe Informe o Limite da quantidade do termo pesquisado para receber uma mensagem
set LimiteTermo=1

for /f %%a in ('type "%Arquivo%" ^|find /i /v /c ""') do set LinhasTotal=%%a

set /a LinhasSubtraidas=%LinhasTotal% - %Linhas%

more +%LinhasSubtraidas% "%Arquivo%">"%Resultado%"

for /f "usebackq delims=" %%a in ("%Resultado%") do (
set Entrada=%%a
call :ProcuraTermo
)
chcp 1252 > nul
IF %QuantidadeTermo% GTR %LimiteTermo%  MSG * Atenção^^! VERIFICAR SE ALGUMA ESTAÇÃO ESTÁ DESATIVADA"
echo.
 

:ProcuraTermo
set "Tempo=!Entrada:~%Contador%,1!"
IF "%Tempo%"=="%Termo%" set /a QuantidadeTermo+=1
IF /i not Defined Tempo (
                         set Contador=0
                         goto :EOF
                        ) Else (
                                set /a Contador+=1& goto :ProcuraTermo)

:EOF
 

   

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Se eu entendi sua questão direito acredito que seja algo assim:

@echo off

for /f "delims=" %%a in ('dir /b /a-d /s /o-d "C:\Users\we\Desktop\Ler nok na 30\*"') do (
                                                                                          set Arquivo=%%a
                                                                                          goto :Next
                                                                                         )
:Next

SetLocal EnableDelayedExpansion

:: Informe a quantidade de linhas que você quer:
set Linhas=2

:: Informe um termo D pesquisado:
set Termo=N

::Informe o arquivo onde vai ser armazenado o resultado
set Resultado=Ocorrência de NOK.txt

::Informe Informe o Limite da quantidade do termo pesquisado para receber uma mensagem
set LimiteTermo=1

for /f %%a in ('type "%Arquivo%" ^|find /i /v /c ""') do set LinhasTotal=%%a

set /a LinhasSubtraidas=%LinhasTotal% - %Linhas%

more +%LinhasSubtraidas% "%Arquivo%">"%Resultado%"

for /f "usebackq delims=" %%a in ("%Resultado%") do (
set Entrada=%%a
call :ProcuraTermo
)
chcp 1252 > nul
IF %QuantidadeTermo% GTR %LimiteTermo%  MSG * Atenção^^! VERIFICAR SE ALGUMA ESTAÇÃO ESTÁ DESATIVADA"
echo.
 

:ProcuraTermo
set "Tempo=!Entrada:~%Contador%,1!"
IF "%Tempo%"=="%Termo%" set /a QuantidadeTermo+=1
IF /i not Defined Tempo (
                         set Contador=0
                         goto :EOF
                        ) Else (
                                set /a Contador+=1& goto :ProcuraTermo)

:EOF

 

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
      651.9k
×
×
  • Create New...