2010-04-14 13 views
8

1) क्या कोई अंतर्निहित है जो मुझे बता सकता है कि किसी चर की सामग्री में केवल अपरकेस अक्षर हैं?2 बैच स्ट्रिंग प्रश्न

2) क्या कोई चर है जिसमें एक चर शामिल है या नहीं? उदाहरण के लिए, मैं देखना चाहता हूं कि परिवर्तनीय% PATH% में रूबी है या नहीं।

उत्तर

15

भाग 1 के लिए, findstr उत्तर है।

> 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% और पाइप चरित्र | के बीच एक रिक्ति है में महत्वपूर्ण है के बाद से है कि एक अंतरिक्ष उत्पादन किया जा रहा में परिणाम होगा: तुम बस errorlevel के साथ regex सुविधा का उपयोग कर सकते हैं जो आपके स्वीकार्य पात्रों में से एक नहीं है।


भाग 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 

दोनों मामलों में आपकी स्क्रिप्ट के व्यवहार को बदलने के लिए। यह एक बैच समाधान (cmd.exe) नहीं है, लेकिन एक आसान विकल्प VBScript का उपयोग कर, जो डिफ़ॉल्ट रूप से पहले से ही है

: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 
1

:

उदाहरण के लिए, माणिक जांच करने के लिए कोड खंड की तरह कुछ हो सकता है आपके सिस्टम पर स्थापित

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) स्ट्रिंग हेरफेर के लिए का उपयोग कर की तरह इसे चलाने के आखिरी बात आप, क्या करने के लिए जब तक आप पूरी तरह से प्रतिबंधित कर रहे हैं चाहते हो जाएगा है। अन्यथा, नौकरी के लिए अधिक उपयुक्त उपकरण का उपयोग करें।

संबंधित मुद्दे