Q
2批次字符串問題
8
A
回答
15
對於部分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
1
這不是一個批量溶液(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. 奇批次轉義字符問題
- 2. 批次字符串連接
- 3. 批次字符串替換
- 4. 批次字符串問題(搜索全線)
- 5. 批次:從一個字符串
- 6. 批次:比較日期字符串
- 7. 的Java讀取字符串批次
- 8. 字符串問題[]
- 9. 字符串問題
- 10. 字符串問題
- 11. 字符串逐字問題
- 12. 批次括號問題
- 13. 批次暫停問題
- 14. 批次for循環問題
- 15. 批次空間問題
- 16. 用javascript分割字符串2次
- 17. 批次到只保留某些字符串中的字符
- 18. 字符串串聯批
- 19. C++字符/字符串讀取問題
- 20. 字符和字符串問題
- 21. 一個字符串問題
- 22. JBoss字符串問題
- 23. 字符串MYSQL CASE問題
- 24. 查詢字符串問題
- 25. 字符串定義問題
- 26. 字符串循環問題
- 27. 字符串替換問題
- 28. 連接字符串問題
- 29. C#字符串問題
- 30. 時間字符串問題