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

[文本处理] [已解决]批处理怎样实现文本替换?

[复制链接]
发表于 2011-5-21 11:24:21 | 显示全部楼层 |阅读模式
下面是txt文档里面的内容,很有规律:

<a title="搜狐" href="http://www.sohu.com">搜狐</a>
<a title="百度" href="http://www.baidu.com">百度</a>
<a title="网易" href="http://www.163.com">网易</a>

想把他变成下面的格式,并生成在另外一个文档里面:
搜狐,http://www.sohu.com,1
百度,http://www.baidu.com,1
网易,http://www.163.com,1

顺祝大家周末愉快!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-5-21 11:45:14 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=3,5 delims==> " %%a in (1.txt) do for /f "tokens=1,2" %%c in ("%%~a %%~b") do echo %%c,%%d,1)>2.txt
复制代码
发表于 2011-5-21 14:31:24 | 显示全部楼层
我看直接用引号分割就够了吧。
发表于 2011-5-21 14:32:16 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=3,5 delims==> " %%a in (test.txt) do  echo %%~a,%%~b,1)>2.txt
  3. pause>nul
复制代码
一层for就能解决了,为什么还要嵌套呢?
发表于 2011-5-21 14:39:32 | 显示全部楼层
3# applba
delims不能用引号作为分隔符

4# Hello123World
这个确实忘了,因为原先是分两步的,简化后忘了统一起来。
发表于 2011-5-21 14:44:29 | 显示全部楼层
呀,回帖时忽然有了个猜想,验证下竟然真的可以,看来可以推翻delims不能用"作为分隔符的观点了:
  1. @echo off
  2. for /f tokens^=1*^ delims^=^" %%a in ("sd"z"vc") do echo %%b
  3. pause
复制代码

评分

参与人数 5PB +40 技术 +14 收起 理由
狗屁不通 + 1 老大,你好棒!
neorobin + 1 good收藏
namejm + 10 + 1 是个重大发现
tmplinshi + 30 + 10 &amp;#160;
Hello123World + 1 确实颠覆了&amp;quot;不能作为分隔符的观点。

查看全部评分

发表于 2011-5-21 14:53:07 | 显示全部楼层
本帖最后由 Hello123World 于 2011-5-21 14:59 编辑

1.为什么你的条件引号都没有也能行?
2.结果是z"vc  ,这说明"并不是真的作为分隔符在起作用。结果2是我错了,*会连同分隔符一起显示。
发表于 2011-5-21 14:54:43 | 显示全部楼层
delims不能用"作为分隔符,估计是产生了语法错误,用^似乎也没法让"起作用。
发表于 2011-5-21 15:04:57 | 显示全部楼层
1.为什么你的条件引号都没有也能行?
2.结果是z"vc  ,这说明"并不是真的作为分隔符在起作用。结果2是我错了,*会连同分隔符一起显示。
Hello123World 发表于 2011-5-21 14:53

1,以前一直惯性思维,没想过引号是的真实目的,我想for可能只能读取一个参数,而""就是把多个参数合并成一个参数的媒介,同时兼具转移作用,避免=被当成语句中的分隔符,所以就去掉引号,用转义来达到它的效果
2,没细看我的代码吗?

评分

参与人数 1技术 +1 收起 理由
tmplinshi + 1 思考得很深入

查看全部评分

发表于 2011-5-21 15:05:58 | 显示全部楼层
耶,我终于也有技术创新了...
发表于 2011-5-21 15:06:54 | 显示全部楼层
  1. @echo off
  2. (for /f tokens^=2^,4^ delims^=^" %%a in (test.txt) do echo %%a,%%b,1)>2.txt
  3. pause
复制代码
应用一下,用"作为分隔符来解决楼主的问题。
 楼主| 发表于 2011-5-22 00:16:28 | 显示全部楼层
谢谢大家!顺祝大家工作顺利!
发表于 2011-5-22 08:09:47 | 显示全部楼层
10# zm900612


兄弟啊,我是随便说说的呀,没有考虑到这么多的
发表于 2011-5-22 11:03:51 | 显示全部楼层
各位大大能解释一下这句吗?
(for /f tokens^=2^,4^ delims^=^" %%a in (test.txt) do echo %%a,%%b,1)>2.txt
一般看到的都是
for /f "tokens=1,delims=" 变量 in(文件名) do echo 变量
但是在这里怎么多加了2个符号 tokens^=2^,4^ delims^=^"这段代码该如何理解呢。感觉有点不好理解,望做个较详细的讲解,谢谢!
发表于 2011-5-22 11:04:52 | 显示全部楼层
主要就是不理解。为什么要多加^这个。tokens=2不就得了。为何要加这个符号"^"。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 06:27 , Processed in 0.025377 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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