windows bat系列9:for處理案例三 單行按指定分隔符分割
1. 需求
假設有一行字串,由幾個字串組成,每個字串間用分隔符delimiter連線,我們要對各個子串進行操作。這就涉及到將單行字串按分隔符分割。如PATH環境變數就是這樣,每個字串就是一個路徑:
C:\Users\Administrator.WIN7-1609051925>echo %path%
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\software\apache-tomcat-9.0.8\bin;D:\software\apache-tomcat-9.0.8\lib;C:\Program Files\7-Zip
2. 程式碼
@echo off
Rem close echo
Rem chane active page
chcp 437 >nul
Rem delay expansion
setlocal enabledelayedexpansion
Rem set parameters
set TESTLIST=D:\myself\windows_script\bat_out;D:\myself\windows_script\bat_test;D:\myself\windows_script\testnull;
set TMPLIST=%TESTLIST%
Rem print title
echo=
echo=
echo=
echo ---------------------------%date% %time:~0,8%---------------------------
set /a NUM = 1
:loop
for /f "tokens=1* delims=;" %%a in ("%TMPLIST%") do (
Rem set local parameters
echo #!NUM! is %%a
set /a NUM = NUM + 1
Rem recursion
set TMPLIST=%%b
)
if defined TMPLIST goto :loop
Rem
echo=
echo=
echo=
endlocal
pause
3. 程式碼解析
a. 待分割的變數TESTLIST最後一個欄位末尾也需要加上“;”分隔符,否則將少分割一個字串;
b. 分割採用迭代演算法,由於for /f "tokens=1* delims=;" %%a in ("%TMPLIST%") do (…)預設是指定分隔符按行分割字串,而我們總共只有一行字串,因而我們把分割後的字串重新存入臨時變數:
set TMPLIST=%%b
後續通過DOS的goto再次迭代分割,最終達到目的;
c. 自定義NUM變數表示分割出來的字串的序號(從1開始);
d. %date% %time:~0,8%是擷取系統日期顯示出來。
4. 測試結果
結果表面:分割正確。
有個小bug:顯示日期是出現??亂碼,那個位置應該是顯示星期幾。此問題筆者不想再改了,請讀者自行研究。提示:需要修改windows系統的語言集與位置等。
相關文章
- windows bat系列7:for處理案例二 產生等差序列WindowsBAT
- windows bat系列11:for處理案例四 去掉字串中的空格WindowsBAT字串
- Windows bat批處理刪除指定N天前的檔案WindowsBAT
- windows 處理bat連線本地mysqlWindowsBATMySql
- 編寫簡單的windows bat批處理指令碼檔案WindowsBAT指令碼
- windows cmt bat批處理中的註釋WindowsBAT
- bat處理檔案BAT
- bat檔案處理BAT
- 批處理檔案 bat 後臺執行BAT
- Windows批處理(cmd/bat)常用命令小結WindowsBAT
- 10 Windows批處理之呼叫例程和bat檔案WindowsBAT
- sqlldr同時處理兩種分隔符SQL
- bat批處理檔案BAT
- bat 批處理字串操作BAT字串
- windows批處理之三:for迴圈Windows
- bat批處理常用指令碼BAT指令碼
- BAT 批處理指令碼 教程BAT指令碼
- shell字串按照指定分隔符切割字串
- BAT批處理判斷服務是否正常執行(批處理命令綜合應用)BAT
- iOS --按鈕 處理iOS
- android apkbuilder.bat批處理AndroidAPKUIBAT
- 如何檢測Windows服務停止後自動啟動?自動執行.bat批處理檔案?WindowsBAT
- DM 原始碼閱讀系列文章(三)資料同步處理單元介紹原始碼
- 影像處理案例03
- 怎樣處理重新命名系列案例程式碼
- .bat批處理新增Python任務BATPython
- XP服務優化批處理.bat優化BAT
- ByteBuffer按行處理資料(readline)
- Windows自動使用管理員許可權執行bat批處理,手動選擇啟停服務WindowsBAT
- sql server 2008中執行bat批處理檔案SQLServerBAT
- 簡單的方法就能教你實現將大量的影片批次進行分割的處理
- 三、實戰系列問題處理集中營
- split 分割 字串(分隔符如:* ^ : | , .) 及注意點字串
- ASP.NET MVC實踐系列-表單處理ASP.NETMVC
- 分割槽表truncate慢處理
- SQL最佳化 | MySQL問題處理案例分享三則MySql
- windows批處理之一:字串處理Windows字串
- windows bat系列10:批量設定&取消共享目錄WindowsBAT