标题: [文本处理] [已解决]批处理怎么把指定的关键字替换掉? [打印本页]
作者: ik22 时间: 2011-4-17 08:49 标题: [已解决]批处理怎么把指定的关键字替换掉?
本帖最后由 ik22 于 2011-4-19 08:14 编辑
哥们好,小弟有个问题想请大家帮忙。
已知html文件的路径和对应的关键字,怎么把对应该的关键字替换掉?
html文件的路径和对应的关键字 写在同一个文本1.txt里面 形式如下:
E:\eik\2010\0829\96610.html 不看新闻的20条理由 钱造假新闻吓唬
E:\wbj\2010\1209\23223.html 口交
E:\qgj\2011\0207\71920.html 失禁
E:\qoptb\2011\0304\39564.html 短信群发
F:\eckg\2010\0923\31127.html 油推
F:\pec\2011\0318\7309.html 老虎机上分器 销售弓弩 牌照隐形
每一行,前面是html文件的路径,空格后面的文字就是这个html文件上出现的非法关键字,有时可能是一个,有时是两三个。
请问怎么写个批处理,直接从每一个html文件把它对应的不良关键字替换成***
在此先谢了!!!!!!!!祝大家工作顺利·- @echo off
- for /f "tokens=1-4" %%a in (a.txt) do (
- sed -i "s/%%b/\*\*\*/g;s/%%c/\*\*\*/g;s/%%d/\*\*\*/g;" "%%a"
- )
复制代码
一定要把批处理 放在跟网页文件同一个盘。这样才有效。。。 同时注意:如果在2003服务器上运行此操作,替换后的文件权限会变,所以要小心了。。
作者: Batcher 时间: 2011-4-17 11:40
- @echo off
- for /f "tokens=1-4" %%a in (a.txt) do (
- sed -i "s/%%b/\*\*\*/g;s/%%c/\*\*\*/g;s/%%d/\*\*\*/g;" "%%a"
- )
复制代码
命令行工具 sed.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
作者: batman 时间: 2011-4-17 12:05
如楼主不想用sed,同时a.txt前面的路径中没有空格:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- set "file="&set "var="
- for %%b in (%%a) do (
- if not defined file (
- set "file=%%b"&set "file_path=%%~dqb"&set "file_name=%%~nxb"
- ) else (
- set "var=!var! %%b"
- )
- )
- (for /f "delims=" %%b in (!file!) do (
- set "str=%%b"
- for %%b in (!var!) do set "str=!str:%%b=***!"
- echo !str!
- ))>!file_path!tem
- del /q !file!&ren !file_path!tem !file_name!
- )
复制代码
作者: ik22 时间: 2011-4-17 20:21
2# Batcher 哥们,这个sed.exe 放在哪里呢?我把它放在windows目录下,运行那个批处理,结果什么都没变化的 。。。是不是我操作有误?
作者: ik22 时间: 2011-4-17 20:23
3# batman 文本里面每一行直接是E:\wbj\2010\1209\23223.html 短信群发
这样的。每一行的前面是路径,然后一个空格 然后就是关键字
作者: batman 时间: 2011-4-18 08:41
本帖最后由 batman 于 2011-4-18 08:43 编辑
5# ik22
sed.exe是放在windows\system32文件夹下
你运行了我写的代码没有?
作者: ik22 时间: 2011-4-18 16:00
6# batman 哥们,我已经把sed.exe 放进C:\WINDOWS\system32 里面了,然后运行 那个批处理。什么都没变化。
我只找了一条来测试,都没变化哦。我用2003系统的,是不是哪里出了问题?
作者: ik22 时间: 2011-4-18 16:05
6# batman 你写那个批处理运行了,那个批处理也跟a.txt文本在同一文件夹下。 结果就是没任何变化,是不是哪出了问题呢。。
作者: batman 时间: 2011-4-18 16:26
8# ik22
2003下应该是没有问题的,没有这个环境无法测试。。。
作者: ik22 时间: 2011-4-18 16:53
9# batman 哥们,要不我把a.txt 文本分成两个新的文本 :文本1.txt是html文件的路径 文本2.txt是关键字
意思是文本1.txt第一行的那个html文件里面就有文本2.txt第一行的那个关键字了。 你说 这样分开后 有没有更好的方法实现替换??
作者: asnahu 时间: 2011-4-18 19:52
10# ik22
可能是分割符造成的,将“/”改为“_”试试。- sed -i "s_%%b_\*\*\*_g;s_%%c_\*\*\*_g;s_%%d_\*\*\*_g;" "%%a"
复制代码
作者: rarboy 时间: 2011-4-18 21:03
嗯!学习了,原来可以这样做,呵呵。怎么感觉像是QBIAS编程滴。
作者: ik22 时间: 2011-4-19 08:11
2# Batcher 哥们,今天早上我把批处理放在 跟网页同一个盘时,运行后,就可以替换。。。
假如不同盘,运行后什么都没变化的。。。 现在可以了。哈。谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |