标题: [文本处理] [已解决]批处理如何截取字符串到一个数组 [打印本页]
作者: yeefyun 时间: 2009-7-8 22:45 标题: [已解决]批处理如何截取字符串到一个数组
::abc.txt 内容:
::{patch$:|0135545454|1||ntest|F0Ouuewhuwe|RegA|
::{ntest$:|{2154545445|090706191310|30||||090707191340|1|}}}
请哪位高手写个批处理 将文件里内容读出并以 "|" 作为分割符将字段读取到一个数组里
比如:
|1| |ntest|12|bc| |这行
str1=1
str2=""
str3=ntest
str4=12
str5=bc
str6=""
相当于vb.net里的trim函数功能(注意的是如果两个||是空的,空字符也要取)
[ 本帖最后由 yeefyun 于 2009-7-9 22:55 编辑 ]
作者: namejm 时间: 2009-7-8 22:52
请不要直接给出大段的代码,没有多少人有这个耐心把你发的代码都认真地看完的,请直接用文字描述你的问题,包括问题产生的背景,并更新到顶楼——提问不是一件随意的事情,里面也包含了不少技巧。
作者: terse 时间: 2009-7-10 00:36
这样行不?- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (tx.txt) do (
- set n=0
- set "str=%%i"
- set "str=!str:|=■|!"
- if "!str:~,1!"=="■" set "str=!str:~1!"
- call:lp "!str!"
- for /l %%a in (1 1 !n!) do if "!str%%a!"=="" (echo str%%a: "")else echo str%%a: !str%%a!
- )
- pause&exit
- :lp
- for /f "tokens=1* delims=|" %%i in (%1) do (
- set/a n+=1
- set "str=%%i"
- set "str=!str:■=!"
- set "str!n!=!str!"
- if not "%%j"=="" call:lp "%%j"
- )
复制代码
不能处理空格- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (tx.txt) do (
- set n=0
- set "str=%%i"
- set "str=!str:|=| !"
- if "!str:~,1!"=="|" set "str=!str:~1!"
- for %%a in (!str!) do (
- set/a n+=1
- set "str=%%a"
- if "!str:|=!"=="" (set "str!n!=""")else set "str!n!=!str:|=!"
- )
- for /l %%a in (1 1 !n!) do for %%b in (!str%%a!) do echo str%%a: %%b
- )
- pause
复制代码
作者: yeefyun 时间: 2009-7-13 22:45 标题: [已解决]
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (tx.txt) do (
- set n=0
- set "str=%%i"
- set "str=!str:|=| !"
- if "!str:~,1!"=="|" set "str=!str:~1!"
- for %%a in (!str!) do (
- set/a n+=1
- set "str=%%a"
- if "!str:|=!"=="" (set "str!n!=""")else set "str!n!=!str:|=!"
- )
- for /l %%a in (1 1 !n!) do for %%b in (!str%%a!) do echo str%%a: %%b
- )
- pause
复制代码
正解
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |