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

[文本处理] [已解决]批处理文件如何让文本内容按拼音排序?

[复制链接]
发表于 2012-1-31 13:06:12 | 显示全部楼层 |阅读模式
例如文本1.txt里有若干Email地址,是未排序的:

女人 zly19781218@hotmail.com
大华都市 metropolis@china.com
城市时报 db@daobao.sina.net
感悟月刊 strong@fornet.com.cn
鸭绿江日报 yaluriverneo@163.com
流行趋势 luxx@cnstock.com
HOW好 shaojing@howmag.com.cn
123导报 db@daobao.sina.net
鸭绿江日报 yaluriverneo@163.com

排序后应该是这样:

123导报 db@daobao.sina.net
HOW好 shaojing@howmag.com.cn
城市时报 db@daobao.sina.net
大华都市 metropolis@china.com
感悟月刊 strong@fornet.com.cn
流行趋势 luxx@cnstock.com
女人 zly19781218@hotmail.com
鸭绿江日报 yaluriverneo@163.com

排序后应该按数字、字母、汉字的顺序排序,并删除信箱后面多余的空格,删除重复的行,比如有两个“鸭绿江日报  yaluriverneo@163.com”。这个批处理怎么写,求高手帮忙,先谢谢了!(就在原文本里排序即可)

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-1-31 14:17:28 | 显示全部楼层

  1. @echo off
  2. (for /f "delims=" %%i in ('sort 1.txt') do if not defined %%i echo %%i&set "%%i==")>$
  3. move $ 1.txt
  4. pause
复制代码

评分

参与人数 1PB +5 技术 +1 收起 理由
CrLf + 5 + 1 乐于助人,幸苦了

查看全部评分

发表于 2012-1-31 14:25:37 | 显示全部楼层

  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do set *%%i==
  3. (for /f "tokens=1,2 delims=*= " %%i in ('set *') do echo %%i %%j)>1.txt
  4. pause
复制代码
 楼主| 发表于 2012-1-31 16:23:16 | 显示全部楼层
回复 2# lvsehuaxue

2楼这个是成功的。不过,有一点小问题:原来所有要整理的文本,第一行都是空行,这样一整理空行就消失了,能不能在整理完后再把那个空行再自动加上。谢谢了!
发表于 2012-1-31 18:10:59 | 显示全部楼层
回复 4# gu3669
代码稍加修改即可。

  1. @echo off
  2. echo.>$
  3. for /f "delims=" %%i in ('sort 1.txt') do if not defined %%i echo %%i>>$&set "%%i=="
  4. move $ 1.txt
复制代码
 楼主| 发表于 2012-1-31 19:05:13 | 显示全部楼层
回复 5# lvsehuaxue


    非常感谢!
发表于 2012-2-2 20:53:22 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. (echo.
  3. for /f "delims=" %%i in ('sort 1.txt') do (
  4.     set aa=%%i&call :loop
  5.     for %%j in ("!aa!") do if not defined %%j echo !aa!&set "%%j=="
  6. ))>$
  7. move $ 1.txt&goto :eof
  8. :loop
  9. if "!aa:~-1!"==" " set aa=!aa:~,-1!&goto loop
复制代码
排序并删除邮箱名后面的多余空格。

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

发表于 2012-2-2 21:42:37 | 显示全部楼层
回复 7# apang


    批处理还真是博大精深啊   

  dos在排序的时候是怎样辨别汉字中的拼音的


  连接哈计算机怎样暗里工作的
发表于 2012-2-3 03:09:51 | 显示全部楼层
回复 8# jdsdsa


    排序次序取决于系统设置。
http://bbs.bathome.net/redirect. ... 3&fromuid=30406
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 15:56 , Processed in 0.019092 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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