2 пакета представляют вопросы в виде строки

1) Действительно ли там кто-либо встроен, который может сказать мне, если содержание переменной содержит только прописные буквы?

2) там какой-либо путь состоит в том, чтобы видеть, содержит ли переменная строку? Например, я хотел бы видеть, содержит ли переменная %PATH % Ruby.

8
задан Geo 14 April 2010 в 04:46
поделиться

2 ответа

Для части 1 ответом является findstr . Вы можете просто использовать функцию регулярного выражения вместе с 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, findstr также является ответом ( / 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_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
15
ответ дан 5 December 2019 в 10:40
поделиться

это не пакетное решение (cmd.exe), а более простая альтернатива с использованием 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) для обработки строк, это последнее, что вы хотели бы делать, если только вы не ограничены абсолютно. В противном случае используйте более подходящий инструмент для работы.

1
ответ дан 5 December 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: