如何从批处理脚本中的命令输出中获取特定行到变量中?
How to get a specific line from command output in batch script into a variable?
我想从 perforce 获取更改列表描述,其中涉及调用 p4 describe -s ,因此输出如下所示。有没有办法只使用 windows 批处理语法从输出中获取(第三行的修剪字符)?
Change 6582 by username on 2016/12/06 00:35:41
MyChangeDescription
Affected files ...
... //depot/foo.txt#7 edit
... //depot/foo2.txt#6 edit
试一试:
p4 -Ztag -F %Description% change -o 6582
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q40986156.txt"
FOR /f "usebackqskip=2tokens=*" %%a IN ("%filename1%") DO (
SET "desc=%%a"
GOTO show
)
:show
ECHO "%desc%"
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
我使用了一个名为 q40986156.txt
的文件,其中包含您的数据用于我的测试。
这使用文件作为输入。由于我无法访问 perforce
,因此我无法对其进行测试,但
@ECHO OFF
SETLOCAL
FOR /f "skip=2tokens=*" %%a IN ('p4 describe -s') DO (
SET "desc=%%a"
GOTO show
)
:show
ECHO "%desc%"
GOTO :EOF
应该是等价的。
简单地说,读取命令的输出,跳过前两行,标记整行,跳过前导空格。将找到的字符串分配给一个变量并立即退出循环。
我想从 perforce 获取更改列表描述,其中涉及调用 p4 describe -s ,因此输出如下所示。有没有办法只使用 windows 批处理语法从输出中获取(第三行的修剪字符)?
Change 6582 by username on 2016/12/06 00:35:41
MyChangeDescription
Affected files ...
... //depot/foo.txt#7 edit
... //depot/foo2.txt#6 edit
试一试:
p4 -Ztag -F %Description% change -o 6582
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q40986156.txt"
FOR /f "usebackqskip=2tokens=*" %%a IN ("%filename1%") DO (
SET "desc=%%a"
GOTO show
)
:show
ECHO "%desc%"
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
我使用了一个名为 q40986156.txt
的文件,其中包含您的数据用于我的测试。
这使用文件作为输入。由于我无法访问 perforce
,因此我无法对其进行测试,但
@ECHO OFF
SETLOCAL
FOR /f "skip=2tokens=*" %%a IN ('p4 describe -s') DO (
SET "desc=%%a"
GOTO show
)
:show
ECHO "%desc%"
GOTO :EOF
应该是等价的。
简单地说,读取命令的输出,跳过前两行,标记整行,跳过前导空格。将找到的字符串分配给一个变量并立即退出循环。