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

回复 8楼 的帖子

建议在顶楼更新帖子,说明需要处理“万行的文件”,以便他人针对你的具体情况给出合适的方案。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. echo 一万行文本的测试结果
  3. echo 开始时间%time%
  4. sort a.txt>b.txt
  5. (for /f "delims=" %%a in (b.txt) do (
  6.   if not defined %%a (
  7.     set "%%a=1"
  8.   ) else (
  9.     echo.%%a
  10.   )
  11. ))>c.txt
  12. findstr /x /g:c.txt a.txt>d.txt
  13. findstr /x /v /g:c.txt a.txt>>d.txt
  14. echo 结束时间%time%
  15. pause
复制代码
一万行文本的测试结果
开始时间 0:16:46.42
结束时间 0:16:55.21
Press any key to continue . . .
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14楼 的帖子

感谢提醒。
没有重复行的时候,c.txt依然会生成,只不过为空而已。
干脆屏蔽算了。
  1. @echo off
  2. echo 一万行文本的测试结果
  3. echo 开始时间%time%
  4. sort a.txt>b.txt
  5. (for /f "delims=" %%a in (b.txt) do (
  6.   if not defined %%a (
  7.     set "%%a=1"
  8.   ) else (
  9.     echo.%%a
  10.   )
  11. ))>c.txt
  12. findstr /x /g:c.txt a.txt>d.txt 2>nul
  13. findstr /x /v /g:c.txt a.txt>>d.txt 2>nul
  14. echo 结束时间%time%
  15. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16楼 的帖子

1、如果重复内容过多,势必会有大量的变量产生,占用的内存将飙升——虽然目前上G的内存已成主流,但是,这上G的内存不应该只被自己的程序使用,而应该留出足够的内存给其他程序运行,大量命名变量乃编程大忌,当然,如果你只求结果而不管过程,或者并没有做程序员的想法,则可以忽略这一条;

这一条是不能忽略的,因为批处理是不允许无限制地定义变量的。
http://technet.microsoft.com/en-us/library/bb490954.aspx
The maximum individual environment variable size is 8192bytes.
The maximum total environment variable size for all variables, which includes variable names and the equal sign, is 65,536KB.

用顶楼的数据测试batcher的代码,发现4444这两行内容并没有在一起,原因有二:

感谢提醒,代码更改如下:
  1. @echo off
  2. echo 一万行文本的测试结果
  3. echo 开始时间%time%
  4. cd.>>a.txt
  5. sort a.txt>b.txt
  6. (for /f "delims=" %%a in (b.txt) do (
  7.   if not defined %%a (
  8.     set "%%a=1"
  9.   ) else (
  10.     echo.%%a
  11.   )
  12. ))>c.txt
  13. findstr /x /g:c.txt b.txt>d.txt 2>nul
  14. findstr /x /v /g:c.txt b.txt>>d.txt 2>nul
  15. echo 结束时间%time%
  16. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表