Tentando ler um conteúdo de arquivo de texto e definir valores de variáveis a partir desse

2

Eu tenho um arquivo em lote que cria um arquivo de texto com sua saída, como segue:

RESULT=0&SECURETOKEN=SmH3kciXiVkiwD0i70CwKYgAR&SECURETOKENID=2013031414280240&RESPMSG=Approved

O comprimento das variáveis é constante, então é fácil analisar o valor da string. Delimits para todos os pares de nome e valor são "e" comercial.

Então, de dentro do primeiro arquivo de lote, preciso chamar outro arquivo de lote e usar dois valores de variável do conteúdo do arquivo de texto:

SECURETOKEN

e

SECURETOKENID

Usar a parte seguinte no segundo lote não ajuda, onde Temp_result.txt é o arquivo que contém a saída.

set /p out=<{full path to the file}\Temp_result.txt
set SECURETOKEN=%out~21,25%
set SECURETOKENID=%out~61,16%

Alguém pode me ajudar, por favor?

    
por IllyaIll 14.03.2013 / 23:06

2 respostas

2

Você está perdendo o : após o nome da variável. Então seus comandos seriam:

set /p out=<{full path to the file}\Temp_result.txt
set SECURETOKEN=%out:~21,25%
set SECURETOKENID=%out:~61,16%
    
por 15.03.2013 / 00:24
2

Parece que você tem uma solução perfeitamente boa com a resposta user1936123. Aqui está uma abordagem completamente diferente que funcionará mesmo que os comprimentos dos valores não sejam constantes.

@echo off
setlocal
for /f "usebackq tokens=2,3 delims=&" %%A in ("{fullFilePath}\Temp_result.txt") do (
  set "%%A"
  set "%%B"
)

Se você estiver disposto a definir uma variável para todos os pares de valores de nome, não apenas o segundo e o terceiro, então:

set /p "ln=" <"{fullFilePath}\Temp_result.txt"
set "%ln:&="&set "%"

Não é óbvio como isso funciona. Ele usa search and replace para transformar a linha na seguinte série de instruções SET, que são então executadas:

set "RESULT=0"&set "SECURETOKEN=SmH3kciXiVkiwD0i70CwKYgAR"&set "SECURETOKENID=2013031414280240"&set "RESPMSG=Approved"
    
por 15.03.2013 / 04:18

Tags