Windows批处理文件,在标记之间找到一个字符串

时间:2015-07-09 15:32:55

标签: windows batch-file cmd

我需要在文件中搜索第一次出现的字符串。

我有这个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 =====: ";

我需要找到这个值1.0 Alpha。在bat文件中我写了这段代码。

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

但他找到了所有第二个字符串:echo“\ r \ n =====”。$ argv [0]。“”。$ version。“:选择一个频道=====:”;

解决方案?

最后一点,脚本可以从$version = '1.0 Alpha';更改为$version = "1.0 Alpha";

报价可能会改变。

2 个答案:

答案 0 :(得分:2)

您需要在找到第一次出现的字符串后退出循环。试试这个:

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

答案 1 :(得分:0)

这可以在一个步骤中完成,让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%