[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何截取字符串到一个数组

::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 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

  请不要直接给出大段的代码,没有多少人有这个耐心把你发的代码都认真地看完的,请直接用文字描述你的问题,包括问题产生的背景,并更新到顶楼——提问不是一件随意的事情,里面也包含了不少技巧。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

这样行不?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (tx.txt) do (
  3.     set n=0
  4.     set "str=%%i"
  5.     set "str=!str:|=■|!"
  6.     if "!str:~,1!"=="■" set "str=!str:~1!"
  7.     call:lp "!str!"
  8.     for /l %%a in (1 1 !n!) do if "!str%%a!"=="" (echo str%%a: "")else echo str%%a: !str%%a!
  9. )
  10. pause&exit
  11. :lp
  12.        for /f "tokens=1* delims=|" %%i in (%1) do (
  13.        set/a n+=1
  14.        set "str=%%i"
  15.        set "str=!str:■=!"
  16.        set "str!n!=!str!"
  17.        if not "%%j"=="" call:lp "%%j"
  18. )
复制代码
不能处理空格
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (tx.txt) do (
  3.     set n=0
  4.     set "str=%%i"
  5.     set "str=!str:|=| !"
  6.     if "!str:~,1!"=="|" set "str=!str:~1!"
  7.        for %%a in (!str!) do (
  8.        set/a n+=1
  9.        set "str=%%a"
  10.        if "!str:|=!"=="" (set "str!n!=""")else set "str!n!=!str:|=!"
  11.     )
  12.    for /l %%a in (1 1 !n!) do for %%b in (!str%%a!) do echo str%%a: %%b
  13. )
  14. pause
复制代码

TOP

[已解决]

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (tx.txt) do (
  3.     set n=0
  4.     set "str=%%i"
  5.     set "str=!str:|=| !"
  6.     if "!str:~,1!"=="|" set "str=!str:~1!"
  7.        for %%a in (!str!) do (
  8.        set/a n+=1
  9.        set "str=%%a"
  10.        if "!str:|=!"=="" (set "str!n!=""")else set "str!n!=!str:|=!"
  11.     )
  12.    for /l %%a in (1 1 !n!) do for %%b in (!str%%a!) do echo str%%a: %%b
  13. )
  14. pause
复制代码
正解

TOP

返回列表