将输出存储为变量

时间:2019-02-18 10:57:04

标签: bash batch-file

我正在处理批处理文件,我想知道使用.bat文件保存输出的最佳方法(我也在使用Unix)。

我所做的就是将输出发送到新的.txt文件,将其保存到变量中,然后删除文件,但是我想简化这种机制。我想直接保存输出,只是为了拥有更好的机制

call "...\bin\server.bat"  start ifa
call "...\bin\jar.exe" -cvfM "justateste.zip" "%1"
call "...\curl.exe" -X POST -i -T "justatest.zip" "http://localhost:9080/rest/ifa/v1/triaged-assessments" | tail --lines=2 

输出,(这是一个随机字符串输出)

d076dc06-b34f-4f1b-bca3-e1c57efdb84c

只需要了解保存tail --lines=2结果的最佳方法即可。

完整输出,(无尾巴)

HTTP/1.1 100 Continue
Content-Length: 0
Date: Fri, 18 Feb 2019 11:34:57 GMT

HTTP/1.1 200 OK
Date: Fri, 18 Feb 2019 11:34:57 GMT
X-Powered-By: Servlet/3.1
Content-Type: text/plain
Date: Fri, 18 Feb 2019 11:34:57 GMT
Content-Length: 36

df8f48d8-29f6-4de2-8186-8450c35658c3
.

1 个答案:

答案 0 :(得分:1)

批量捕获命令输出的常用方法是for /f循环。
过滤输出时(找到包含三个破折号的行),不需要tail

@echo off 
set command="...\curl.exe" -X POST -i -T "justatest.zip" "http://localhost:9080/rest/ifa/v1/triaged-assessments"
for /f "tokens=*" %%a in ('%command% ^|findstr ".*-.*-.*-.*"') do set "output=%%a"
echo %output%