Board logo

标题: [文本处理] [已解决]批处理怎样把文本文档里关键词加到对应网址里? [打印本页]

作者: daohe    时间: 2011-3-27 17:10     标题: [已解决]批处理怎样把文本文档里关键词加到对应网址里?

本帖最后由 daohe 于 2011-3-28 00:22 编辑

此批处理的作用是把关键词加到对应网址里.
w.txt(包含全部网址,可能带有问号和等号,形式如下)
www.abc.com/1.html
www.abc.com/2.html
www.abc.com/3.html
www.abc.com/4.html
www.abc.com/5.html

a.txt(包含w.txt部分网址,顺序随机,逗号后面带有一字符串,形式如下)
www.abc.com/1.html,x-y-z
www.abc.com/2.html,x-y-z
www.abc.com/3.html,x-yz-zz
www.abc.com/4.html,x-yz-zz

b.txt(包含w.txt部分网址,与a.txt部分网址有重复,顺序随机,逗号后面带有一组数据,形式如下)
www.abc.com/1.html,j-k
www.abc.com/3.html,j-kb
www.abc.com/4.html,j-kc
www.abc.com/5.html,j-k

求一批处理,处理后成
c.txt(按顺序,把a.txt b.txt逗号后面的字符串加到w.txt每行网址后面,用逗号隔开)
www.abc.com/1.html,x-y-z,j-k
www.abc.com/2.html,x-y-z,others
www.abc.com/3.html,x-yz-zz,j-kb
www.abc.com/4.html,x-yz-zz,j-kc
www.abc.com/5.html,others,j-k

1. 生成的c.txt
第一列网址与w.txt完全相同;
第二列为a.txt对应网址后的字符串,若没有则加上others;
例如:例子里的a.txt 不包含www.abc.com/5.html,则在第一列加上others.
第三列为b.txt对应网址后的字符串,若没有则加上others;
例如:例子里的b.txt 不包含www.abc.com/2.html,则在第二列加上others.

PS : w.txt,a.txt,b.txt每个文件内的网址均不重复.

补充:
其实生成的c.txt就是一个表格.
第一列是w.txt里的网址
第二列是a.txt网址后面的字符串
第三列是b.txt网址后面的字符串

a.txt,b.txt第一列网址的作用就是,定位a.txt,b.txt里面的字符串,把 某一字符串对应的网址填入w.txt.

请问我的阐述还不明白吗?
作者: tmplinshi    时间: 2011-3-27 18:25

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set "file_url=w.txt"
  4. set "file_str1=a.txt"
  5. set "file_str2=b.txt"
  6. set "file_out=c.txt"
  7. for %%n in (1 2) do (
  8.     for /f "usebackq tokens=1,2 delims=," %%a in ("!file_str%%n!") do (
  9.         set %%a_%%n=%%b
  10.     )
  11. )
  12. (for /f "usebackq" %%u in ("%file_url%") do (
  13.     if not defined %%u_1 set %%u_1=others
  14.     if not defined %%u_2 set %%u_2=others
  15.     echo %%u,!%%u_1!,!%%u_2!
  16. )) >"%file_out%"
复制代码

作者: weichenxiehou    时间: 2011-3-27 18:40

本帖最后由 weichenxiehou 于 2011-3-27 18:43 编辑

题目没看清,理解错误!
作者: daohe    时间: 2011-3-27 19:12

我这样描述,还是会理解出现歧义.
我的表达还不是很明确,真不好意思.
3# weichenxiehou
作者: daohe    时间: 2011-3-27 19:19

代码运行后没反应,
我尝试修改了代码,还是一样没反应.请问到底是哪里错了?
3# weichenxiehou
作者: Batcher    时间: 2011-3-27 21:53

5# daohe


把@echo off删掉,看看哪一步出错了。
作者: weichenxiehou    时间: 2011-3-27 22:23

4# daohe
楼主误解我的意思了,我并不是说楼主表达得不够清楚,而是我之前写了一个代码,看到二楼版主写的代码才知道有个地方理解错了,就只好把代码删了,但是3楼的位置已经占了,就只好这么说一句了。2楼的代码我测试了没问题啊,版主写得很好的。
作者: daohe    时间: 2011-3-28 00:21

怀疑是discuz的问题
我点击下面[复制代码按钮],然后粘贴到记事本里去保存,一直就是出错状态.
直接选中复制黏贴, 就能正常运行代码.

6# Batcher
作者: daohe    时间: 2011-3-28 00:22

7# weichenxiehou
非常感谢.
作者: daohe    时间: 2011-3-28 00:22

2# tmplinshi
感谢版主给了这么好的批处理




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2