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

[其他] [已解决]批处理中sort命令如何过滤重复行?

请高手们帮我分析下这段代码。我想知道其中“sort”的具体功能和用法。
我自己也搜了一点点资料看了一下,是不是这个“sort”命令有不同的版本啊?网上的一篇文章介绍了/u参数,功能是排序好后如果存在相同的多行只显示一行,但我试的时候提示“无效的命令行开关”。我的系统是XP(SP3)。(sort /?这样的回答就请免了)
  1. @echo off
  2. if "%~1"=="" (
  3.    setlocal enabledelayedexpansion
  4.    for /f "tokens=2 delims==" %%a in ('%~s0 h^|sort') do (
  5.       set /a n=n%%6+1
  6.       if !n! equ 1 set /a m+=1&set "m2=00!m!"
  7.       if not exist "第!m2:~-3!部分\" md "第!m2:~-3!部分
  8.       move "%%a" "第!m2:~-3!部分
  9.     )
  10.     pause&exit
  11. )
  12. for %%i in (*) do (
  13.    if not "%~nx0"=="%%~nxi" (
  14.       set "var=000000000000000000000000000000%%i=%%i"
  15.       setlocal enabledelayedexpansion
  16.       (echo !var:~-30!)
  17.       endlocal
  18. ))
  19. goto :EOF
复制代码

[ 本帖最后由 zljzsmzzx 于 2009-6-17 14:29 编辑 ]

C:\Test>type a.txt
bathome
bathome
Batcher

C:\Test>type a.txt|sort -u
Batcher
bathome

第三方命令行工具 sort.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

可以理解:
相当与 type a.txt | sort
这段代码不过是用内存取代了a.txt 具体代码就是 %0 | sort
而后面的 h 就是为了区分代码运行时是for中的 %0 还是双击运行的。
把 '%~s0 h^|sort' 改为 type a.txt|sort 再把第二个for的echo后面加个 >>a.txt 效果是一样的。
技术问题请到论坛发帖求助!

TOP

回复 2楼 的帖子

谢谢。另外我想问一下。系统自带的"sort"的所有功能第三方的都有吗?如果是的话我就把系统自带的给替换掉去了。

TOP

回复 3楼 的帖子

谢谢版主。刚开始我没理解“if "%~1"==""”和“%~s0 h”。现在明白了。

TOP

回复 4楼 的帖子

你可以自己看看两者的帮助文档,比较一下便知。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6楼 的帖子

第三方sort自带的帮助文档是英文的,看不懂啊。

TOP

返回列表