. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#1 旧 2010-11-27, 01:24:47 默认 【求助】如何批量删除大量文本文件中带有指定词组的行?
Naco 当前离线  

想把以前foxmail里的所有邮件都导入到Gmail里去,用IMAP的方式直接导入Gmail,发现大量的邮件无主题无发件人信息,内容也无法辨认。一开始一位是foxmail的问题,后来把邮件导出成.eml(实际上就是文本文件),然后通过 Windows Live Mail 再导入Gmail,出现同样的问题。

经过搜索,找到问题根本原因,foxmail在邮件头会新增一行代码:
引用:
+OK 3368 octets
(蓝色数字部分每封邮件不一样)

正是因为这行代码,导入到Gmail之后会无法识别。

所以想找个办法,能够批量搜索上千个文本文件,凡是发现第一行是 +OK 开头的就把这一行删掉。


Follow Me: @Nacox
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,354 声望值: 3
精华: 20,解答: 82
#2 旧 2010-11-27, 01:41:46 默认
namejm 当前离线  

1、上千个文本文件是在同一目录下还是在不同的文件夹内?
2、最大的文本文件有上M的大小吗?
3、如果把不是第一行里的其他所有类似“+OK 3368 octets ”的行都删掉有影响吗?


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的拼读与缩写
xfmz
 
xfmz 的头像
热心会员
 
资 料:
注册日期: Jan 2001
帖子: 1,798 声望值: 4
精华: 3,解答: 14
#3 旧 2010-11-27, 02:52:52 默认
xfmz 当前离线  

下面是批处理代码,在虚拟机里模拟测试通过。
处理前做好数据备份。
----------------------------------------------------
@echo off
cls
if exist file.txt del file.txt

::查找范围:当前目录下*.txt
::查找字符串:第一行内容为+OK开头的文件
findstr /s /n "+OK" *.txt | findstr "1:+OK" >file

::把符合要求的文件列表存为file.txt
for /f "tokens=1,2 delims=:" %%i in (file) do echo %%i >>file.txt

::删除文件中含有+OK的行
for /f "delims=" %%i in (file.txt) do (
findstr /ivc:+OK "%%i" >file
type file >"%%i"
)


del file
del file.txt

此帖于 2010-11-27 12:32:44 被 xfmz 编辑. .


每当牵着你的手,我才知道你还在我身边。
媳妇,我爱你!
lyg021
 
lyg021 的头像
核心会员
 
资 料:
注册日期: May 2002
帖子: 2,168 声望值: 7
精华: 0,解答: 11
#4 旧 2010-11-27, 06:07:22 默认
lyg021 当前离线  

好多改名软件都有这个功能,譬如我在另一个帖子里提到的单文件版妖眼改名工具。
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#5 旧 2010-11-27, 12:08:28 默认
Naco 当前离线  

引用:
作者: namejm 查看帖子
1、上千个文本文件是在同一目录下还是在不同的文件夹内?
2、最大的文本文件有上M的大小吗?
3、如果把不是第一行里的其他所有类似“+OK 3368 octets ”的行都删掉有影响吗?
1、都在同一目录下
2、最大的文件不超过2MB
3、只有第一行以“+OK”开头的字串有影响,其他地方虽然暂时没看到有这样的字串但应该不需要删除

引用:
作者: xfmz 查看帖子
下面是批处理代码,在虚拟机里模拟测试通过。
处理前做好数据备份。
----------------------------------------------------
@echo off
cls
if exist file.txt del file.txt

[COLOR="#0000ff"]:......
把大部分需要处理的文件内容全部都删掉了变成0字节,只有少部分处理正常,试了几次没找到规律。我发个样本上来麻烦你帮忙看看,谢谢。
上传的附件
文件类型: rar Sample.rar (9.4 KB, 4 次查看)

此帖于 2010-11-27 12:11:48 被 Naco 编辑. .
xfmz
 
xfmz 的头像
热心会员
 
资 料:
注册日期: Jan 2001
帖子: 1,798 声望值: 4
精华: 3,解答: 14
#6 旧 2010-11-27, 12:22:08 默认
xfmz 当前离线  

引用:
作者: Naco 查看帖子
把大部分需要处理的文件内容全部都删掉了变成0字节,只有少部分处理正常,试了几次没找到规律。我发个样本上来麻烦你帮忙看看,谢谢。
处理的文件名不对,代码只适合正常的文件名,如果文件名中有空格等这种情况就出错。
3楼的代码我修改了,你再试下。:blush;

ps:如何用tc的话可以先临时批量修改下文件名,把空格用_来替换即可。

此帖于 2010-11-27 12:33:12 被 xfmz 编辑. .
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#7 旧 2010-11-27, 12:28:43 默认
Naco 当前离线  

引用:
作者: lyg021 查看帖子
好多改名软件都有这个功能,譬如我在另一个帖子里提到的单文件版妖眼改名工具。
下了一个妖眼文件批量改名器 1.23 绿色单文件版,可以做到删除制定行数,但做不到判断哪些文件需要删哪些不需要。
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#8 旧 2010-11-27, 12:29:38 默认
Naco 当前离线  

引用:
作者: xfmz 查看帖子
处理的文件名不对,代码只适合正常的文件名,如果文件名中有空格等这种情况就出错。
我想想要怎么解决。:blush;

ps:如何用tc的话可以先临时批量修改下文件名,把空格用_来替换即可。
这样?那我先试试把所有的文件名规范化,删掉空格这些。是不能有任何的标点符号么?
xfmz
 
xfmz 的头像
热心会员
 
资 料:
注册日期: Jan 2001
帖子: 1,798 声望值: 4
精华: 3,解答: 14
#9 旧 2010-11-27, 12:34:47 默认
xfmz 当前离线  

引用:
作者: Naco 查看帖子
这样?那我先试试把所有的文件名规范化,删掉空格这些。是不能有任何的标点符号么?
代码我修改了,加了引号。这样就可以处理含空格等文件名的文件了。
已经用你的样本文件在虚拟里测试通过。
你测试下看看。
春暖花开
 
春暖花开 的头像
热心会员
 
资 料:
注册日期: Dec 2003
帖子: 848 声望值: 4
精华: 0,解答: 1
#10 旧 2010-11-27, 12:39:24 默认
春暖花开 当前离线  

楼主你试下能否从QQ邮箱的IMAP拖邮件到gmail的IMAP?
看是否正常。

如果可以
那先从foxmail拖到QQ邮箱的IMAP,再从QQ邮箱的IMAP拖到gmail
春暖花开
 
春暖花开 的头像
热心会员
 
资 料:
注册日期: Dec 2003
帖子: 848 声望值: 4
精华: 0,解答: 1
#11 旧 2010-11-27, 12:39:56 默认
春暖花开 当前离线  

如果不行在找我
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,354 声望值: 3
精华: 20,解答: 82
#12 旧 2010-11-27, 13:18:51 默认
namejm 当前离线  

  以下批处理代码会把当前目录下所有txt中以"+OK"打头的行删除(不区分大小写),保存新文件到result文件夹中,而不管是否位于第一行上,这样做是为了编写代码的方便;若需要严格控制在第一行上,则还需要变通,但是会增加代码的复杂度,影响执行效率:
代码:
@echo off
md result 2>nul
for %%i in (*.txt) do (
    findstr /bivc:"+OK" "%%i">"result\%%i"
)
pause
lyh728
 
lyh728 的头像
『软件使用』版主
 
资 料:
注册日期: Jan 2002
帖子: 4,283 声望值: 3
精华: 15,解答: 4
#13 旧 2010-11-27, 17:01:29 默认
lyh728 当前离线  

vim 就可以
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#14 旧 2010-11-29, 15:25:22 默认
Naco 当前离线  

谢谢xfmz、namejm和其他同学,已经用xfmz在3楼的代码搞定了,所有邮件都成功导入到了Gmail里。彻底告别Foxmail,告别本地客户端了。
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 11:26:53.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号