欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DOS批處理字符串截取

 更新時(shí)間:2023年06月02日 11:48:49   作者:揚(yáng)科網(wǎng)絡(luò)  
本文主要介紹了?DOS批處理字符串截取,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

【字符串截取語法格式】  

% VAR:~ [ m [ ,n ] ] %

或者 

 !VAR: ~ [ m [,n ] ] !

  • [  ] (方括號(hào))表示可選
  • 兩邊的 %(或  ! )為變量取值標(biāo)識(shí)符
  • VAR 為變量名(不可缺少)
  • 符號(hào) : 用于分隔變量名和說明部分
  • 符號(hào) ~ 可以簡單理解為“偏移”
  • m 為 %VAR% 或 !VAR]! 中的字符偏移,如果從右向左,則字符的偏移從 0 始計(jì)數(shù),即:其第一個(gè)字符的偏移是0;如果從左向右,則字符的偏移從 -1 開始計(jì)數(shù),即:其最后一個(gè)字符的偏移是 -1),m 的缺省值為0。
  • n 為將要截取字符串的長度,n 的缺省值為 0

【語法功能】

從變量值中截取字符(串) 

【關(guān)于 m 的取值】 

的取值可以是取正整數(shù),也可以是負(fù)整數(shù),下面舉例說明:

set "a=abcdefg"

在 %a:~m,n% 中,m的取值范圍如下所示:

  • 如果 的值大于取值范圍的最大值時(shí),則截取不到任何字符
  • 如果 的值小于取值范圍的最小值時(shí),則 取值為最小值

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: -7 小于 取值范圍最小值 -6,則m取值-6
set var=%a:~-7,2%
echo 截取后的值: "%var%"
echo  ---------------------------------------------------
set "a=abcdef"
echo 截取前的值: "%a%"
:: 6 大于 取值范圍最大值 5,則截取不到任何字符
set var=%a:~6,2%
echo 截取后的值: "%var%"

運(yùn)行 

C:\>demo
截取前的值: "abcdef"
截取后的值: "ab"
 ---------------------------------------------------
截取前的值: "abcdef"
截取后的值: ""
C:\>

【關(guān)于 n 的取值】 

的取值可以是取正整數(shù),也可以是負(fù)整數(shù),下面舉例說明: 

1、%a:~m,n% 中,為正整數(shù),則在 %a% 中,從偏移是 m 的字符(包括偏移是 m 的字符)開始,截取長度為 的所有字符。

C:\>set a=abcdefg
C:\>echo %a:~1,3%
bcd
C:\>

%a:~m,n% 中,為正整數(shù),如果截取的長度超出 %a% 中的長度,則截取至 %a% 的末尾字符(包括末尾字符)。 

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: 8 超出 %a% 的字符最大偏移(5),則截取到末尾
set var=%a:~1,8%
echo 截取后的值: "%var%"

運(yùn)行 

C:\>demo
截取前的值: "abcdef"
截取后的值: "bcdef"
C:\>

2、在 %a:~m,n% 中,如果 為負(fù)整數(shù),則先除掉 %a% 末尾的 -n 個(gè)字符的,再進(jìn)行截取操作:截取從偏移是 m 的字符(包括偏移是 m 的字符)開始,直到被截取原字符串的末尾字符(包括末尾字符)為止。

C:\>set a=abcdefg
C:\>echo %a:~0,-3%
abcd
C:\>

“ %VAR:~ [ m [ ,n ] ]% ” 中,當(dāng) n  是負(fù)整數(shù),但該負(fù)整數(shù)的絕對(duì)值超出 %VAR% 的字符個(gè)數(shù)時(shí),則截取不到任何字符。

示例 

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: n的絕對(duì)值超出 %a% 的字符個(gè)數(shù)
set var=%a:~-1,-7%
echo 截取后的值: "%var%"

運(yùn)行 

C:\>demo
截取前的值: "abcdef"
截取后的值: ""
C:\>

【關(guān)于被截取變量的值】 

“ %VAR:~ [ m [ ,n ] ]% ” 中,字符串截取操作發(fā)生后,VAR 的值不會(huì)改變

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: 從%a%第二個(gè)字符(其偏移為1)開始,截取2個(gè)字符
set var=%a:~1,2%
echo 截取后的值: "%var%"
:: 截取操作發(fā)生后,a的值不會(huì)改變
echo a的值: "%a%" 

【標(biāo)注一】   下載Notepad++

運(yùn)行

 C:\>demo
截取前的值: "abcdef"
截取后的值: "bc"
a的值: "abcdef"
C:\>

【關(guān)于缺省值】 

1、“ %VAR:~ [ m [ ,n ] ]% ” 中,n 的缺省值為 0

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: 從%a%第二個(gè)字符(其偏移為1)開始,截取 0 (n的缺省值是0)個(gè)字符
set var=%a:~1,%
echo 截取后的值: "%var%"

運(yùn)行

C:\>demo
截取前的值: "abcdef"
截取后的值: ""
C:\>

2、“ %VAR:~ [ m [ ,n ] ]% ” 中,m 的缺省值為 0

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: 從%a%的第一個(gè)字符(m的缺省值是0)開始,截取2個(gè)字符
set var=%a:~,2%
echo 截取后的值: "%var%"

運(yùn)行

C:\>demo
截取前的值: "abcdef"
截取后的值: "ab"
C:\>

3、“ %VAR:~ [ m [ ,n ] ]% ” 中, 和 ,(逗號(hào))都缺省時(shí),則 的值為:從偏移是 m 的字符(包括該字符)到結(jié)尾字符(包括該字符)的所有字符的個(gè)數(shù)

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
set "a=abcdef"
echo 截取前的值: "%a%"
:: 從%a%的第二個(gè)字符(m的缺省值是0)開始,截取到結(jié)尾的所有字符
set var=%a:~1%
echo 截取后的值: "%var%"

運(yùn)行

C:\>demo
截取前的值: "abcdef"
截取后的值: "bcdef"
C:\>

【在變量延遲展開中使用字符串截取】

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set "a=abcdef"
echo 截取前的值: "!a!"
:: 從 !a! 的第二個(gè)字符,截取長度為 2 的所有字符
set var=!a:~1,2!
echo 截取后的值: "%var%"

運(yùn)行

C:\>demo
截取前的值: "abcdef"
截取后的值: "bc"
C:\>

【注意】

字符串的截取操作在引用變量的地方均可以,并不一定必須要有set命令

示例

:: 本示例包含漢字,如執(zhí)行亂碼,請(qǐng)使用 Notepad++ 把本文檔轉(zhuǎn)化成ANSI編碼  【標(biāo)注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set "a=abcdef"
echo 截取前的值: "!a!"
::使用echo命令直接輸出截取的字符串
:: 從 !a! 的第二個(gè)字符,截取長度為 2 的所有字符
echo 截取的字符串: !a:~1,2!

運(yùn)行 

C:\>demo
截取前的值: "abcdef"
截取的字符串: bc
C:\>

到此這篇關(guān)于DOS批處理字符串截取的文章就介紹到這了,更多相關(guān)批處理字符串截取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論