Comando FOR para pegar texto de um arquivo e colocar em variável - Go Scripts

Go Scripts

The Computers World

domingo, 29 de maio de 2016

Comando FOR para pegar texto de um arquivo e colocar em variável

Comando FOR para pegar texto de um arquivo e colocar em variável.

O comando FOR, é um comando para criar laços (LOOP's) no MS-DOS, vejo muitas pessoas que não sabem a forma correta de utilizar, porém irei mostrar neste tutorial, como fazer para pegar uma variável de um texto qualquer e colocar em uma varável.


Neste Tutorial, irei criar um arquivo em lotes para Saber qual o nome do sistema operacional, irei colocar de forma simples e explicada cada item para fazer esse processo simples.


Primeiro vou colocar o código-fonte para aprenderem e entenderem o porquê de cada coisa:

Código-Fonte: SO.BAT
Copie e cole no bloco de notas salve como: SO.BAT


  1. :: INICIO DO ARQUIVO EM LOTES
  2. @echo off
  3. color 1F
  4. title colocando texto em variavel
  5. set LOG1=LOG1.txt
  6. set LOG2=LOG2.txt
  7. cls
  8. :: RÓTULO INICIAL
  9. :begin
  10. cls
  11. echo.
  12. echo.
  13. systeminfo >%LOG1%
  14. if exist %LOG1% (goto :gr) else (echo. nao gerado o LOG 1 & pause & exit)
  15. :gr
  16. cls
  17. mode 50,10
  18. FIND /I "Nome do sistema operacional:" %LOG1% > %LOG2%
  19. FOR /F "TOKENS=5-9 DELIMS= " %%B IN (%LOG2%) DO SET B=%%B %%C %%D %%E %%F
  20. ECHO.&ECHO.&ECHO SISTEMA OPERACIONAL:&ECHO.%B%
  21. :CLEAR
  22. DEL /Q /F %LOG1% %LOG2%
  23. PAUSE>NUL
  24. EXIT


EXPLICANDO O CÓDIGO:

Linha 01 - Apenas um comentário começando com duplo dois-pontos ( :: );

Linha 02 - Desativa o echo de comando;

Linha 03 - Muda a cor de fundo e a cor do texto, nesse caso é fundo Azul(1) e texto Branco brilhante(F);

Linha 04 - Comando Title (Colocar o nome da janela);

Linha 05 e 06 - Atribuindo variáveis;

Linha 13 - Comando SystemInfo (Exibe as informações do Sistema), e é gerado um arquivo em texto com essas informações (LOG1.txt);

Linha 14 - Verifica se existe o arquivo "LOG1.txt" (se existir continua no rótulo :gr senão será fechado o programa em lotes.

Linha 17 - Redimensiona o tamanho da janela do arquivo em lotes (neste caso para 50 colunas e 10 linhas).

Linha 18 - Comando FIND este comando irá procurar o texto dentro das aspas ( " ) e o parâmetro /I não irá  diferenciar Maiúscula ou minúscula, no arquivo LOG1.TXT (variável %LOG1%) e irá criar um novo arquivo somente com o resultado encontrado (irá escrever a linha encontrado da busca no novo arquivo) no arquivo LOG2.TXT (%LOG2%).

Até aqui, já separamos a linha que queremos encontra a informação necessária. Vamos para a próxima linha gora.


Linha 19 - Neste comando iremos iniciar o comando para pegar somente o texto que queremos e colocar em uma variável:


Código: 

FOR /F "TOKENS=5-9 DELIMS= " %%B IN (%LOG2%) DO SET B=%%B %%C %%D %%E %%F


FOR /F (Parâmetro /F de File (arquivo);
TOKENS=5-9 essa opção irá especificar cada token do Delimitador (DELIMS);
DELIMS=  (Delimitador, nesse caso é um espaço);
%%B é uma variável do comando FOR;
IN (em, no)
(%LOG%) é onde será feito o comando, nesse caso é o arquivo LOG2.TXT;

DO é igual a faz;
SET B=%%B %%C %%D %%E %%F - esse é o comando final, onde SET B vai receber a variável do comando FOR, ou seja a variável %%B e seus TOKENS %%C %%D %%E %%F;


Agora vamos nos aprofundar o que acontece realmente nesse comando:

vamos ao portugol seguinte (algoritmo);

PARA /Arquivo "Simbolos=de 5 ao  9 Delimitador= (espaço em branco)" Variável em (Arquivo LOG.TXT) FAZ Comando atribuir a variável 
B recebe=Tokens
Microsoft =%%B
Windows =%%C
10 = %%D
Pro = %%E
<espaço em branco> = %%F

Ou seja o TOKENS e DELIMS fará o seguinte:

O DELIMS irá separar os TOKENS por espaços, sendo assim cada palavra separada por espaço será um TOKENS. Veja:

Este é o arquivo LOG2.TXT

---------- LOG1.TXT
Nome do sistema operacional:               Microsoft Windows 10 Pro


Veja como é separados por espaços (DELIMS= ) os TOKENS no arquivo:

Nome = Token 1
do = Token 2
sistema = Token 3
operacional: = Token 4
Microsoft = Token 5 (%%B)
Windows = Token 6  (%%C)
10 = Token 7 (%%D)
Pro = Token 8 (%%E)
  = Token 9 (%%F)

Como queremos Pegar somente o texto Microsoft Windows 10 Pro, apenas usaremos os toekns do tokens 5 ao tokens 9 (nesse caso poderiamos usar até o token 8 somente). Ficaria assim: TOKENS=5-9.

Pronto! agora a variável %%B pegará somente estes textos do arquivo LOG2.txt (%LOG2%) e irá fazer o comando atribuindo esses valores a variável de SET B= %%B %%C %%D %% E %%F.

Até aqui, já conseguimos colocar apenas o texto que queremos na variável %B%;

Linha 20 - Agora iremos escrever na tela essa informação: 


ECHO.&ECHO.&ECHO SISTEMA OPERACIONAL:&ECHO.%B%


Irá pular 2 duas linhas e escrever na tela usando a variável %B%;



Exemplificando o DELIMS:

Se você colocasse o DELIMS=: (com dois pontos como delimitador)


Você iria dividir os TOKENS em apenas dois, pois nesse caso do texto do arquivo LOG2.txt o delimitador dois-pontos ( : )  separa em apenas dois tokens:
Ficaria assim:

---------- LOG1.TXT
TOKEN 1 = Nome do sistema operacional:
TOKEN 2 =                Microsoft Windows 10 Pro


Nesse caso você poderia usar ... "TOKENS=2 DELIMS=:" ...
Mas veja que o TOKEN 2 iria pegar um monte de espaços antes do nome Microsoft .Windows 10 Pro.



Por isso neste caso usamos o delimitador como o espaço ( );


Então pessoal, é isso, espero que gostem, curtam e se tiverem dúvidas, podem postar nos comentários abaixo, ou pela nossa página no facebook..

Mandem seus FeedBack



POWERED
H4X0R-SW©2016
GoScripts©2016

ACESSE NOSSAS REDES SOCIAIS


3 comentários:

  1. Muito bom cara, parabéns mesmo.
    Melhor explicação que encontrei...

    ResponderExcluir
  2. Parabéns amigo! Muito boa suas explicações. Muito obrigado! Consegui resolver aqui, tirei minha dúvida.

    ResponderExcluir