尝试读取文本文件内容并从中设置变量值

尝试读取文本文件内容并从中设置变量值

我有一个批处理文件,它创建一个文本文件,其输出如下所示:

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

变量的长度是恒定的,因此很容易从字符串中解析出值。所有名称-值对的分隔符都是 & 符号。

然后,从第一个批处理文件中,我需要调用另一个批处理文件并使用文本文件内容中的两个变量值:

SECURETOKEN

SECURETOKENID

在第二批中使用以下部分没有帮助,其中 Temp_result.txt 是包含输出的文件。

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

有人能帮帮我吗?

答案1

:变量名后面缺少了。因此,您的命令应为:

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

答案2

看起来你对 user1936123 的回答有一个完美的解决方案。这是一种完全不同的方法,即使值长度不是恒定的,它也能起作用。

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

如果您愿意为所有名称值对设置一个变量,而不仅仅是第二和第三个,那么:

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

上面的代码如何工作并不明显。它使用搜索和替换将该行转换为以下一系列 SET 语句,然后执行这些语句:

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

相关内容