我有一个批处理文件,它创建一个文本文件,其输出如下所示:
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"