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
Primeiro vou colocar o código-fonte para aprenderem e entenderem o porquê de cada coisa:
Copie e cole no bloco de notas salve como: SO.BAT
- :: INICIO DO ARQUIVO EM LOTES
- @echo off
- color 1F
- title colocando texto em variavel
- set LOG1=LOG1.txt
- set LOG2=LOG2.txt
- cls
- :: RÓTULO INICIAL
- :begin
- cls
- echo.
- echo.
- systeminfo >%LOG1%
- if exist %LOG1% (goto :gr) else (echo. nao gerado o LOG 1 & pause & exit)
- :gr
- cls
- mode 50,10
- FIND /I "Nome do sistema operacional:" %LOG1% > %LOG2%
- FOR /F "TOKENS=5-9 DELIMS= " %%B IN (%LOG2%) DO SET B=%%B %%C %%D %%E %%F
- ECHO.&ECHO.&ECHO SISTEMA OPERACIONAL:&ECHO.%B%
- :CLEAR
- DEL /Q /F %LOG1% %LOG2%
- PAUSE>NUL
- 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
Muito bom cara, parabéns mesmo.
ResponderExcluirMelhor explicação que encontrei...
Parabéns amigo! Muito boa suas explicações. Muito obrigado! Consegui resolver aqui, tirei minha dúvida.
ResponderExcluirGenial!!!
ResponderExcluir