问题是,我想通过使用Windows bash utils来实现这一点(这样就可以在其他工作站上轻松使用,而无需使用Cygwin/grep等其他应用程序)。此外,该命令将在一个较大的脚本中,该脚本使用提取的字符串作为文件名的一部分。
例如:这是搜索文件中的行
" <DataVersion>A0C2</DataVersion>"
A0C2是我需要的字符串,但它可以有一个不同的值,如X1Z4,但总是有4个半整数字符长。
<DataVersion> and </DataVersion> are always present.
此外,这条线可能会出现不止一次,但我只需要考虑第一次。
我同时找到了自己问题的答案。
set ROW=
set VERSION=
for /f %%i in ( 'findstr "<DataVersion>" file.txt' ) do @set ROW=%%i
set VERSION=%ROW:~x,y%
其中:
- x是要在ROW中跳过的字符数
- y是要在版本中保存的字符数
所以在的情况下
findstr "<DataVersion>" file.txt
返回ROW并将其设置为以下值:
<DataVersion>AX23</DataVersion>
然后:
set VERSION=%ROW:~14,4%
将VERSION设置为AX23