代码之家  ›  专栏  ›  技术社区  ›  Geo

2批字符串问题

  •  8
  • Geo  · 技术社区  · 15 年前

    1)是否有内置功能可以告诉我变量的内容是否只包含大写字母?

    2)是否有任何方法可以查看变量是否包含字符串?例如,我想看看变量%path%是否包含ruby。

    2 回复  |  直到 13 年前
        1
  •  15
  •   paxdiablo    13 年前

    对于第1部分, findstr 就是答案。您只需将regex功能与 errorlevel :

    > set xxokay=ABC
    > set xxbad=AB1C
    > echo %xxokay%|findstr /r "^[A-Z]*$" >nul:
    > echo %errorlevel%
    0
    > echo %xxbad%|findstr /r "^[A-Z]*$" >nul:
    > echo %errorlevel%
    1
    

    在这种情况下,你必须这样做 echo %xxokay% 以及管道特性 | ,因为这将导致输出的空间不是您可接受的字符之一。


    对于第2部分, 芬德斯特 也是答案( /i 是否忽略可能是您想要的大小写-如果大小写必须匹配,请将其关闭):

    > set xxruby=somewhere;c:\ruby;somewhere_else
    > set xxnoruby=somewhere;somewhere_else
    > echo %xxruby%|findstr /i ruby >nul:
    > echo %errorlevel%
    0
    > echo %xxnoruby%|findstr /i ruby >nul:
    > echo %errorlevel%
    1
    

    然后可以使用:

    if %errorlevel%==1 goto :label
    

    在这两种情况下更改脚本的行为。

    例如,用于Ruby检查的代码段可能类似于:

    :ruby_check
        echo %yourvar%|findstr /i ruby >nul:
        if %errorlevel%==1 goto :ruby_check_not_found
    :ruby_check_found
        :: ruby was found
        goto :ruby_check_end
    :ruby_check_not_found:
        :: ruby was NOT found
    :ruby_check_end
    
        2
  •  1
  •   ghostdog74    15 年前

    这不是批处理解决方案(cmd.exe),而是使用vbscript的更简单的替代方案,默认情况下,系统上已经安装了vbscript。

    Set objArgs = WScript.Arguments
    var=objArgs(0)
    check=var
    If check=UCase(var) Then
      WScript.Echo "String contains all uppercase"
    Else
      WScript.Echo "String doesn't contain all uppercase"
    End If
    ' to check string contains substring
    mystring="This is my ruby string"
    check="ruby"
    If InStr(mystring,check)>0 Then
        WScript.Echo "string contains ruby"
    End If 
    

    将文件另存为 myscript.vbs 像这样运行

    C:\test>cscript //nologo myscript.vbs abC
    String doesn't contain all uppercase
    string contains ruby
    
    C:\test>cscript //nologo myscript.vbs ABCD
    String contains all uppercase
    string contains ruby
    

    使用批处理(cmd.exe)进行字符串操作是您最不希望做的事情,除非您受到绝对限制。否则,请使用更适合该作业的工具。