我正在处理批处理文件,我想知道使用.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
.
答案 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%