日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批处理之字符串处理和数值计算

發布時間:2023/12/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批处理之字符串处理和数值计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符串處理

  批處理有著具有非常強大的字符串處理能力,其功能絕不低于C語言里面的字符串函數集。批處理中可實現的字符串處理功能有:截取字符串內容、替換字符串特定字段、合并字符串、擴充字符串等功能。下面對這些功能一一進行講解。

1.截取字符串

? ? 截取字符串可以說是字符串處理功能中最常用的一個子功能了,能夠實現截取字符串中的特定位置的一個或多個字符。舉例 說明其基本功能:
  @echo off
  set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789
  echo 原字符串(第二行為各字符的序號):
  echo %ifo%
  echo 1234567890 123 45678901234567890123456
  echo 截取前5個字符:
  echo %ifo:~0,5%
  echo 截取最后5個字符:
  echo %ifo:~-5%
  echo 截取第一個到倒數第6個字符:
  echo %ifo:~0,-5%
  echo 從第4個字符開始,截取5個字符:
  echo %ifo:~3,5%
  echo 從倒數第14個字符開始,截取5個字符:
  echo %ifo:~-14,5%
  pause
? ? 當然,上面的例子只是將字符串處理的基本功能展示出來了,還看不出字符串處理具體有什么用處。下面這個例子是對時間進行處理。
  @echo off
  echo 當前時間是:%time% 即 %time:~0,2%點%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
  pause

2.替換字符串

  替換字符串,即將某一字符串中的特定字符或字符串替換為給定的字符串。舉例說明其功能:
  @echo off
  set aa=偉大的中國!我為你自豪!
  echo 替換前:%aa%
  echo 替換后:%aa:中國=中華人民共和國%
  echo aa = %aa%
  set "aa=%aa:中國=中華人民共和國%"
  echo aa = %aa%
  pause
  對于上面的例子有一點說明,對比兩個echo aa = %aa%可以發現,如果要修改變量aa的內容的話,就需要將修改結果“%aa: 中國=中華人民共和國%”賦值給變量aa。上面的字符串截取也有著同樣的特點。


3.字符串合并

  其實,合并字符串就是將兩個字符串放在一起就可以了。舉例說明:
  @echo off
  set aa=偉大的中國!
  set bb=我為你自豪!
  echo %aa%%bb%
  echo aa=%aa%
  echo bb=%bb%
  set "aa=%aa%%bb%"
  echo aa=%aa%
  pause
  同樣,如果要改變變量aa的內容的話,就需要將合并結果“%aa%%bb%”賦值給變量aa。

4.擴充字符串

  “擴充”這個詞匯來自于微軟自己的翻譯,意思就是對表示文件路徑的字符串進行特殊的處理,具體功能羅列如下:
  ~I - 刪除任何引號("),擴充 %I
  %~fI - 將 %I 擴充到一個完全合格的路徑名
  %~dI - 僅將 %I 擴充到一個驅動器號
  %~pI - 僅將 %I 擴充到一個路徑
  %~nI - 僅將 %I 擴充到一個文件名
  %~xI - 僅將 %I 擴充到一個文件擴展名
  %~sI - 擴充的路徑只含有短名
  %~aI - 將 %I 擴充到文件的文件屬性
  %~tI - 將 %I 擴充到文件的日期/時間
  %~zI - 將 %I 擴充到文件的大小
  %~$PATH:I - 查找列在路徑環境變量的目錄,并將 %I 擴充
  到找到的第一個完全合格的名稱。如果環境變量名
  未被定義,或者沒有找到文件,此組合鍵會擴充到
  空字符串
  可以組合修飾符來得到多重結果:
  %~dpI - 僅將 %I 擴充到一個驅動器號和路徑
  %~nxI - 僅將 %I 擴充到一個文件名和擴展名
  %~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名
  %~dp$PATH:i - 查找列在路徑環境變量的目錄,并將 %I 擴充
  到找到的第一個驅動器號和路徑。
  %~ftzaI - 將 %I 擴充到類似輸出線路的 DIR
  以上內容引用于for /?幫助信息。其中的I代表變量I,不過需要說明的是,不是所有的變量都能夠進行擴充的,有兩個條件 :1.該字符串代表一個文件路徑;2.變量要用%x來表示,x可取a-z A-Z 0-9共62個字符中的任意一個。舉例說明:
  @echo off
  echo 正在運行的這個批處理:
  echo 完全路徑:%0
  echo 去掉引號:%~0
  echo 所在分區:%~d0
  echo 所處路徑:%~p0
  echo 文件名:%~n0
  echo 擴展名:%~x0
  echo 文件屬性:%~a0
  echo 修改時間:%~t0
  echo 文件大小:%~z0
  pause
  其中的%0是批處理里面的參數,代表當前運行的批處理的完全路徑。類似的還有%1-%9,分別代表傳遞來的第1-9個參數。例 子如下:
  @echo off
  set aa=C:\Windows\PPP\a.btx
  call :deal aaa %aa% "c c" ddd eee
  pause>nul
  exit
  :deal
  echo %%0 = %0
  echo %%1 = %1
  echo %%2 = %2
  echo %%3 = %3
  echo %%4 = %4
  echo %%5 = %5
  其中,變量aa在之前是不可以擴充的,通過call命令并將aa作為參數傳遞給子函數:deal,將aa變量轉換成了變量%1,即符合 %x格式,從而可以進行字符串擴充。
  至于%x中x取a-z A-Z的形式,可以復習一下for語句,for語句里面的變量就是用%x來表示的,因而可以直接進行擴充


數值計算

  批處理里面的數值計算功能較弱,只能夠進行整型計算,忽略浮點數的小數部分;同時數值計算的范圍也受限于系統位數,對于目前較為常見的32位機來說,數值計算能處理的數值范圍為0x80000000h~0x7FFFFFFFh,即-2147483648~+2147483647。
  數值計算需要使用set命令,具體格式為“set /a expression”。其中,expression代表計算表達式,計算表達式跟C語言里面的表達式基本上完全一致。set支持的運算符也跟C語言里面的一樣,只是沒有了増一減一。set支持的運算符及優先級排序如下:
  =========================================
  () - 分組
  ! ~ - - 一元運算符(邏輯非、按位非、取負)
  * / % - 算數運算符(乘、除得商、除得余數,即取余)
  + - - 算數運算符(加、減)
  << >> - 邏輯移位(左移一位、右移一位)
  & - 按位“與”
  ^ - 按位“異”
  | - 按位“或”
  = *= /= %= += -= - 賦值
  &= ^= |= <<= >>=
  , - 表達式分隔符(set可一次處理多個表達式)
  =========================================
  我們知道,批處理中取變量的值是需要用%或者!的,而在set /a 中,直接用變量名稱即可取得變量的值。另外,set支持八進制(數字前綴0)、十進制(數字無前綴)和十六進制(數字前綴0x),且支持不同進制之間的計算,如set /a a=123+0123+0x123,計算及顯示結果為十進制。

轉載于:https://www.cnblogs.com/defias/p/3381684.html

總結

以上是生活随笔為你收集整理的批处理之字符串处理和数值计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。