找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23668|回复: 6

[文本处理] 批处理如何切割字符串?

[复制链接]
发表于 2013-5-15 00:40:42 | 显示全部楼层 |阅读模式
有一个字符串  我把他们用,连接后  怎么让他们重新拆分  如题
字符串:abc def         hjg        rtd   c      p   QQ
然后我把上面六个连接一起 变成新的字符串 abc def,hjg,rtd,c,p,QQ
我现在需要解决的是  如何重新分开!  注abc def是一个字符串
发表于 2013-5-15 01:17:26 | 显示全部楼层
如果不含特殊字符可以用这个简单的:
  1. @echo off
  2. set "str=abc def,hjg,rtd,c,p,QQ"
  3. setlocal enabledelayedexpansion
  4. set str=!str:,=" "!
  5. ::把 , 替换为分隔符,再用 for 读取
  6. for %%a in ("!str!") do echo;%%~a
  7. pause
复制代码
不然可以用这个比较通用的:
  1. @echo off
  2. set "str=abc def,hjg,rtd,c,p,QQ"
  3. setlocal enabledelayedexpansion
  4. set str=!str:,=^

  5. !
  6. ::把 , 替换为 换行符,然后用 for /f 作为多行文本读取
  7. echo;!str!
  8. ::for /f 就不举例了
  9. pause
复制代码
发表于 2013-5-15 01:22:05 | 显示全部楼层
再不行可以用别的办法:
  1. @set @t=0;WScript.Echo(WScript.Arguments(0).replace(/,/g,"\r\n"));/*
  2. @echo off
  3. for /f %%a in ('cscript /nologo /e:jscript "%~0" a,b,c') do echo %%a
  4. pause
复制代码
改成 stdin 的也同理。
发表于 2013-5-15 01:22:55 | 显示全部楼层
或者 sed:
  1. @echo off
  2. echo a,b,c|sed "s/,/\n/g"
  3. pause
复制代码
发表于 2013-5-15 01:26:30 | 显示全部楼层
再或者 awk...
  1. @echo off
  2. echo a,b,c|gawk -F, "{for(i=1;i<=NF;i++){print $(i)}}"
  3. pause
复制代码
办法有这么多(还要的话还有...),怎么用就看你心情~
发表于 2013-5-15 09:44:35 | 显示全部楼层
回复 5# CrLf
  1. echo abc def,hjg,rtd,c,p,QQ | gawk "gsub(/,/,"\t")"
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 学习了

查看全部评分

发表于 2013-5-15 19:00:58 | 显示全部楼层
回复 6# BAT-VBS


    内部函数真邪恶,谢谢指点,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:56 , Processed in 0.025129 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表