Windows?BAT批處理字符串相關(guān)操作(定義、分割、拼接、替換、切片、查找)
1. 字符串定義
使用set
來定義字符串
@echo off set string1=Hello echo %string1%
代碼說明:
- 將字符串Hello賦值給string1的變量
2. 字符串拼接
使用 %string1%%string2%
的方式完成字符串的拼接。
@echo off set string1=Hello set string2=World set combined1=%string1% %string2% set combined2=%string1%,%string2% set combined3=%string1%%string2% set combined4=aaa%string1%bbb%string2%ccc set "combined5=%string1%^&%string2%" echo %combined1% echo %combined2% echo %combined3% echo %combined4% echo %combined5%
代碼說明:
用來連接字符串的字符串,如果包含了特殊字符則需要使用^
轉(zhuǎn)義,并且需要使用""
括起來,特殊字符包括(但不限于):
符號 | 作用 |
---|---|
@ | 命令行回顯屏蔽符 |
% | 批處理變量引導(dǎo)符 |
> | 重定向符 |
>> | 重定向符 |
< 、>& 、<& | 重定向符 |
| | 命令管道符 |
^ | 轉(zhuǎn)義字符 |
& | 組合命令 |
&& | 組合命令 |
|| | 組合命令 |
"" | 字符串界定符 |
3. 字符串分割
一個字符串 My-String,并且你想要將其分割為 My 和 String。
@echo off set my_string=My-String for /f "tokens=1,2 delims=-" %%a in ("%my_string%") do ( set first_part=%%a set second_part=%%b ) echo First part: %first_part% echo Second part: %second_part%
代碼說明:
定義了一個名為 my_string 的變量,其值為 My-String
它使用 for /f
命令來分割這個字符串。tokens=1,2
指定了分割后的部分(tokens),delims=-
指定了分隔符(delimiters)
分割后的部分被賦值給 %%a
和 %%b
,然后被存儲在 first_part 和 second_part 變量中
上述例子中delims=-
指定的是字符集作為分割符,比如:delims=+-$#
表示字符串分割時是按+
-
&
#
分別進行分割。
有時候可能需要一個字符串來作為分割符,可以通過如下方式實現(xiàn):
@echo off set cmd_str=REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Desktop" for /F "skip=2 tokens=*" %%S in ('%cmd_str%') do set str=%%S ::set "str=Common Desktop REG_EXPAND_SZ %%PUBLIC%%\Desktop" :: 利用字符串替換功能,將 REG_EXPAND_SZ 替換為#,注意這里兩端各有4個空格 set str=%str: REG_EXPAND_SZ =#% :: 然后再利用for /f函數(shù),delims=# 來分割字符串 for /F "tokens=1,2 delims=#" %%a in ("%str%") do ( set value_name=%%a set value=%%b ) echo value_name="%value_name%" echo value="%value%"
代碼說明:
利用字符串替換功能,將多個字符 REG_EXPAND_SZ
替換為單個字符#
,注意這里兩端各有4個空格;
:然后再利用for /f
方法,delims=#
來分割字符串,從而達到曲線救國的目的
4. 字符串替換
語法:%var:old_str=new_str%
說明:使用str2來替換var變量中str1的一部分內(nèi)容
@echo off set VAR=hello set VAR=%VAR:ell=ipp% echo %VAR%
代碼說明:
創(chuàng)建了一個變量VAR,它的值是“hello”。然后,使用“ell” 替換為 “ipp”。因此,腳本將輸出 “hippo”。
5. 字符串切片
語法:目標(biāo)字符串=%源字符串:~起始位置,截取長度%
說明:start_index 是子串的開始位置,length 是子串的長度。索引是從0開始的,所以0表示字符串的第一個字符。
@echo off echo %%date%%=%date% echo %%date:~0,4%%=%date:~0,4% echo %%date:~5,2%%=%date:~5,2% echo %%date:~8,2%%=%date:~8,2% echo %%date:~-2%%=%date:~-2% echo %%date:~0,-2%%=%date:~0,-2% echo %%date:~-8,3%%=%date:~-8,3% echo %%date:~-8,-3%%=%date:~-8,-3% echo %%date:~4%%=%date:~4% echo %%date:~,4%%=%date:~,4% echo %%date:~4,%%=%date:~4,%
輸出:
%date%=2023/07/11 周二
%date:~0,4%=2023
%date:~5,2%=07
%date:~8,2%=11
%date:~-2%=周二
%date:~0,-2%=2023/07/11
%date:~-8,3%=07/
%date:~-8,-3%=07/11
%date:~4%=/07/11 周二
%date:~,4%=2023
%date:~4,%=
代碼說明:
- 起始位置:
1)起始值為 正,表示正著數(shù),如:%date:~5,2%
,表示從正著數(shù)第5個字符,往后截取2個字符(不含第5個字符);
2)起始值為 負,表示倒著數(shù),如:%date:~-8,3%
,表示從倒著數(shù)第8個字符,往后截取3個字符(含第8個字符);
3)起始值為0或空,表示從最左邊開始,如:%date:~,4%
,%date:~0,4%
都表示從左邊起始位置,截取2個字符;
(起始位置如果省略,必需有個逗號占位,如果逗號省略則表示【截止長度為空】) - 截止長度(偏移量):
1)截止長度為 正,表示截取長度,如:%date:~8,2%
,表示從正著數(shù)第8個字符,往后截取2個字符(不含第8個字符);
2)截止長度為 負,表示結(jié)束位置,如:%date:~-8,-3%
,表示從倒著數(shù)第8個字符,往后截取,一直截取到倒數(shù)第3個字符的位置(含倒數(shù)第8個字符,不含倒數(shù)第3個字符);
3)截止長度為 空,表示截取到結(jié)尾位置,如:%date:~4%
,表示從正著數(shù)第4個字符,往后截取所有字符(不含第4個字符);
(截止長度如果省略,不能有逗號占位,否則取值為空)
6. 字符串查找
使用echo
和findstr
命令來判斷是否包含一個字符串
@echo off set VAR=hello echo %VAR% | findstr /C:"ell" >nul if errorlevel 1 ( echo String not found ) else ( echo String found )
代碼說明:
創(chuàng)建了一個變量 VAR,它的值是 “hello”。然后,使用 echo 和 findstr 命令來查找 “ell”。如果 “ell” 被找到,腳本將輸出 “String found”,否則,輸出 “String not found”
到此這篇關(guān)于Windows BAT批處理字符串相關(guān)操作(定義、分割、拼接、替換、切片、查找)的文章就介紹到這了,更多相關(guān)BAT批處理字符串操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
dos命令或批處理 發(fā)生系統(tǒng)錯誤5 拒絕訪問
在dos下運行net start mysql 不能啟動mysql!提示發(fā)生系統(tǒng)錯誤 5;拒絕訪問! 這是因為權(quán)限不夠的問題。2011-03-03用批處理刪除N天前或指定日期時間(前后)創(chuàng)建(或修改)的文件
這篇文章主要介紹了用批處理刪除N天前或指定日期時間(前后)創(chuàng)建(或修改)的文件,需要的朋友可以參考下2016-11-11