windows - "delims=#+#" - more then 1 character as delimiter -
is possible define delimiter not limited 1 character? based on title's example, define separator e.g. '#+#'. textfiles/lines can contain both characters, there little chance you'll come across particular substring/text combo.
no, can not use string delimiter in delims=
clause. of course can include string, handled set of separate characters used delimiters, not delimiter string.
if need split on string, fastest approach replace delimiter string character not included in data , use character delimiter
@echo off setlocal enableextensions disabledelayedexpansion /f "delims=" %%a in ("this +test!! #+# of string #splitting#") ( set "buffer=%%a" setlocal enabledelayedexpansion (for /f "tokens=1,2 delims=¬" %%b in ("!buffer:#+#=¬!") ( endlocal echo full line : [%%a] echo first token : [%%b] echo second token : [%%c] )) || if "!!"=="" endlocal )
note: setlocal enabledelayedexpansion
needed able read variable changed inside for
loop retrieving data (here simulated directly including string). then, inside for
loop tokenizes readed line, delayed expansion disabled avoid problems !
characters (if delayed expansion active, consumed parser). reason endlocal
inside loop.
as doing string replacement , possible end string composed of delimiters, possible do
clause of inner for
not executed, final if
included ensure enabledelayedexpansion
cancelled.
Comments
Post a Comment