[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样输出符合条件行的内容到另一个文本并删除原文本符合条件行?

本帖最后由 碇シンジ 于 2011-9-7 19:27 编辑

[文本处理]输出符合条件行的内容到另一个文本并删除原文本符合条件行.



批处理的目的如题.
例如:
现有文本a.txt
sdfjlkajdf666666
dfjala998-39-0672340-92-495
45647-531>ljgeuipai666666
847587adfieuiIEUROWJE=-98934*&#$^*@&#
<>D>GMIWE(&%)*jsofiueoij;j666666

执行批处理后的结果

自己生成一个TEMP.txt(或者是覆盖掉TEMP.txt的原内容).
sdfjlkajdf666666
45647-531>ljgeuipai666666
<>D>GMIWE(&%)*jsofiueoij;j666666
将带有666666的整行内容输出到TEMP.TXT之内.
然后a.txt的内容就只剩下
dfjala998-39-0672340-92-495
847587adfieuiIEUROWJE=-98934*&#$^*@&#

一行文本的内容可能非常长,并且带有特殊字符.

首先说明一下.自己可以说完全不懂批处理= =,
站内搜索过类似内容的.就是输出指定行.但是看不懂怎么修改.而且不止一个例子.但是似乎都着重于指定第几行第几行.而不是条件来着.如果已经有提过的话请给个链接指引一下.
还有就是.要处理的原文本并不一定是a.txt而是想实现拖拽功能来着.但是输出的就TEMP.txt也没问题.同时输出TEMP.TXT跟a.txt是同一个目录下应该也可以实现的吧?
请求各位帮忙.
只是明天到中秋可能也没什么机会上网.如果帖子不合版规的话还是请删掉吧.等过了中秋再提问好了
----
站内的分类标签就是[文本处理][文件操作]那些.原来在FIRE FOX下是看不见的= =
另外....IE6下居然一直提示验证码不对.明明就是....搞得另外一台电脑上来发- -
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. findstr "666666" a.txt >temp.txt
  3. findstr /v "666666" a.txt > a.txt.tmp
  4. move a.txt.tmp a.txt
复制代码

TOP

回复 2# awk
  1.     @echo off
  2.     findstr "666666" %1>"D:\Documents\Desktop\temp.txt"
  3.     findstr /v "666666" %1 > %1.tmp
  4.     move %1.tmp %1
复制代码
感谢回答.但是还有些许疑问.
查了一下,拖拽用的代码修改了一下.变得支持拖拽了.可是现在有个问题.默认输出文档跟执行文档是同一路径?
就是第二行代码中"D:\Documents\Desktop\temp.txt"是指定了文件输出到哪里.能不能不指定?
假如执行文档是e:\a.txt直接拖拽到批处理之后.生成的TEMP.TXT也是输出到e:\路径下?

TOP

  1. @echo off
  2. cd /d "%~dp1"
  3. findstr "666666" %1>"temp.txt"
  4. findstr /v "666666" %1 > %1.tmp
  5. move %1.tmp %1
复制代码
1

评分人数

TOP

本帖最后由 碇シンジ 于 2011-9-7 19:43 编辑

回复 4# awk

十分感谢,代码十分有效,自己正在进一步想着弄成支持多文件拖拽执行。并且生成的文件不在是单一的TEMP.TXT而是源文件名.TEMP.TXT这类形式。(不包含源文件的扩展名)
嘛,现在也没时间研究这个估计还是得过了中秋才行,到时候可能还需要请教。请多多指教!

关于语句
cd /d "%~dp1"
看不懂~dp是什么含义,直接用"%1"就提示目录名无效那么~dp的含义是不是表示拖拽文件的路径中的当前文件夹?这个表示是固定的吗?还是说是~dp里面三个字符各自代表了不同作用组合在一起才有这个效果?

TOP

回复 5# 碇シンジ


   是的,cd /d "%~dp1"中的%~dp1   每个字母代表不同的意思:
   送给你的:
  1. @echo off
  2. echo Make a tmp file > tmp.txt
  3. pushd c:\windows
  4. call :sub tmp.txt
  5. popd
  6. call :sub tmp.txt
  7. pause
  8. del tmp.txt
  9. pause
  10. :sub
  11. echo 删除引号: %~1
  12. echo 扩充到路径: %~f1
  13. echo 扩充到一个驱动器号:%~d1
  14. echo 扩充到一个路径:%~p1
  15. echo 扩充到一个文件名:%~n1
  16. echo 扩充到一个文件扩展名:%~x1
  17. echo 扩充的路径指含有短名:%~s1
  18. echo 扩充到文件属性:%~a1
  19. echo 扩充到文件的日期/时间:%~t1
  20. echo 扩充到文件大小:%~z1
  21. echo 扩展到文件名和扩展名:%~nx1
  22. echo 扩展到类似Dir的输出行:%~ftza1
  23. echo.
  24. goto :eof
复制代码


希望有用~

TOP

本帖最后由 碇シンジ 于 2011-9-16 13:50 编辑

回复 6# garyng
3Q~又学到了一点东西
已经记录下来了

TOP

返回列表