很难找到一种方法(如果可能的话),即查找并使用一个命令中的文本字符串,并在下一个命令中使用该字符串。
示例是,如果脚本返回一堆不同的项目,但我正在寻找具有“Acct Num:X23422”的内容,其中 X23422 会针对每个命令输出进行更改(这意味着每个命令不会有多个 Acct Num)输出),一旦显示多行输出,批处理将搜索“Acct Num:”并使用下一组字符“提取”X23422(或显示的任何其他#),然后在下一个命令。
因此,本质上找到并使用 X23422 作为该 CMD 会话的验证。
请告诉我这样的事情是否可能,如果可以,如何实现?
for /f "tokens=3" %%e in ('whateveryourcommandis^|findstr /i /L /c:"Acct Num: "') do set "accnum=%%e"
echo The account number for further uses is : %accnum%
使用
findstr
查找 whateveryourcommandis
输出中包含“Acct Num:”的行,并将该行的第三个标记(假设您的行是 Acct Num: X23422
)分配给 %%e
,然后分配给环境变量accnum
然后在
accnum
命令中使用 echo
将其显示到控制台。
需要插入符号
^
,因为管道 |
必须在 command-to-be-executed
语句中的 for
内转义。
请参阅提示中的
for /?
、findstr /?
、set /?
和 echo /?
,以获取更多文档 - 或有关 SO 的数千个示例。