Lote para extrair uma palavra de uma string dentro de um arquivo de texto

1

Eu tenho um arquivo database.txt com este conteúdo:

40001     16                                DATAMAN      Jimbo            WS2

Eu quero extrair a terceira palavra, delimitada por espaço em branco ("DATAMAN" neste exemplo), e armazene-o em uma variável em um script de lote do Windows. O comprimento do espaço em branco pode variar (assim como o comprimento da palavra).

    
por Luca 30.10.2013 / 18:55

1 resposta

2

Uma solução simples é

for /f "tokens=3" %%a in (database.txt) do set word3=%%a

Após essa declaração, a variável %word3% conterá a terceira palavra da linha no arquivo. Se o arquivo tiver mais de uma linha, você obterá a terceira palavra da última linha que tenha pelo menos três palavras; O comando set word3=%%a (após a palavra-chave do ) será executado com %%a definido para a terceira palavra de cada linha. Se você decidir que deseja fazer mais de um comando por linha, use a seguinte sintaxe:

for /f "tokens=3" %%a in (database.txt) do (
     
     commands referencing %%a
     
)

Editar: Como dito acima, o código (comandos) no bloco após o do é executado para cada linha qualificada. Se você quiser "capturar" apenas a primeira linha, basta fazer isso adicionando lógica de filtragem, como em:

setlocal enabledelayedexpansion
set first=1
for /f "tokens=3" %%a in (database.txt) do (
      if !first! == 1 (
           set first=0
            
           commands referencing %%a
            
      )
)

Você pode substituir o a (em %%a ) por qualquer letra, mas deve ser apenas uma única letra; não é uma variável normal.

    
por 31.10.2013 / 21:02