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

[文本处理] [已解决]批处理如何根据字符串出现的先后顺序提取文本中含有这些字符串的行

[复制链接]
发表于 2014-9-26 10:12:08 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-12 15:23 编辑


a.txt内容:

中国 12345
韩国 654321
新加坡 wwwww
1234657
abcnnhjhka
美国 abcd
日本 00000

按指定字符提取并排序行,指定字符:中国 、美国 、日本 、 韩国 、新加坡 中国 排第一行,依次是 美国 、日本 、韩国 、新加坡
结果:

中国 12345
美国 abcd
日本 00000
韩国 654321
新加坡 wwwww

以下两代码只能提取指定字符的行,不能按指定字符排序,如何修改?

1:
  1. @echo off
  2. findstr /r /g:"%~0" a.txt>new.txt
  3. & exit
  4. 中国
  5. 美国
  6. 日本
  7. 韩国
  8. 新加坡
复制代码
2:
  1. findstr /i "中国 美国 日本 韩国 新加坡" a.txt>new.txt
复制代码
发表于 2014-9-26 10:40:47 | 显示全部楼层
回复 1# nai
  1. for %%i in (中国 美国 日本 韩国 新加坡) do findstr /i %%i a.txt 2>nul
复制代码
 楼主| 发表于 2014-9-26 10:53:18 | 显示全部楼层
回复 2# terse
不行
发表于 2014-9-26 11:25:38 | 显示全部楼层
回复 3# nai
有什么提示吗
 楼主| 发表于 2014-9-26 11:39:33 | 显示全部楼层
回复 4# terse
怎么使用,输出文件?

我直接复制你的代码运行,什么反应都没有。
发表于 2014-9-26 11:49:44 | 显示全部楼层
本帖最后由 terse 于 2014-9-26 11:52 编辑

回复 5# nai
存为BAT文件执行

  1. (@for %%i in (中国 美国 日本 韩国 新加坡) do findstr /i %%i a.txt 2>nul)>new.txt
  2. start "" new.txt
复制代码
 楼主| 发表于 2014-9-26 12:02:56 | 显示全部楼层
回复 6# terse
还是不行
 楼主| 发表于 2014-9-26 12:05:54 | 显示全部楼层
回复 6# terse
结果:



F:\新建文件夹>findstr /i 中国 a.txt  2>nul
中国 12345

F:\新建文件夹>findstr /i 美国 a.txt  2>nul
美国 abcd

F:\新建文件夹>findstr /i 日本 a.txt  2>nul
日本 00000
F:\新建文件夹>findstr /i 韩国 a.txt  2>nul
韩国 654321

F:\新建文件夹>findstr /i 新加坡 a.txt  2>nul
新加坡 wwwww
发表于 2014-9-26 13:15:24 | 显示全部楼层
回复 8# nai
文件 第一行 加上 @echo off
 楼主| 发表于 2014-9-26 13:27:44 | 显示全部楼层
回复 9# terse

可以了,非常感谢!
发表于 2014-9-27 01:29:34 | 显示全部楼层
写了一个 order.js,可以满足类似“非线性”排序的需求,有兴趣的童鞋可以试试:
http://bbs.bathome.net/viewthread.php?tid=32097
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 05:47 , Processed in 0.016631 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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