Windowsbatch file,find标记之间的string

我需要在文件中search一个string的第一次出现。

我有这个PHP文件:

<?php #--------------------------------------------------------------------------------------- # # # Gpl V2 and further license updates applies to this code # # 2015/05/21 # #------------------------------------------------------------------------------- error_reporting(0); $version = '1.0 Alpha'; //some code echo "\r\n===== ".$argv[0]." ".$version.": Select a channel =====: "; 

我需要find这个值1.0阿尔法。 在一个bat文件中我写这个代码。

 for /f "tokens=*" %%x in ('findstr "$version" %~1') do ( set str=%%x ) 

但他发现所有第二个string:echo“\ r \ n =====”。$ argv [0]。“”。$ version。“:select一个频道=====:”;

解决scheme?

最后一件事,脚本可以从$version = '1.0 Alpha';$version = "1.0 Alpha";

报价可能会改变。

找到第一个字符串后,需要退出循环。 尝试这个:

 for /f "tokens=*" %%x in ('findstr "$version" %~1') do ( set str=%%x goto :EndFor ) :EndFor set str=%str:"='% for /f "tokens=2 delims='" %%x in ('echo(%str%') do set str=%%x echo(str=%str% pause 

这可以在一步完成,让FOR / F循环解析出实际的版本字符串。

奇数语法将'"指定为令牌分隔符,并查找第二个令牌。

 @echo off setlocal for /f tokens^=2^ delims^='^" %%V in ('findstr $version "%~1"') do ( set "version=%%V goto :break ) :break echo version=%version%