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

回复 7楼 的帖子

用不着临时文件。
在for的in里面用('set _^|sor')t就可以排序。

话说我第一反应就是把数字作为变量名的一部分来存储。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

set再for
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd.>b.txt
  4. for /f "delims=" %%a in ('type a.txt') do for %%i in (%%a) do set number=____%%i&set !number:~-5!=1
  5. for /f "delims=_=" %%i in ('set _^|sort') do (
  6.   set var=!var! %%i
  7.   set /a n+=1
  8.   set /a "i=1/(n/6)" 2>nul && (>>b.txt echo !var!&set var=&set n=)
  9. )
  10. (echo !var!)>>b.txt%不足6个数的部分%
  11. start b.txt
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

for /l + findstr (有临时文件)
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd.>b.txt
  4. (for /f "delims=" %%a in ('type a.txt') do for %%i in (%%a) do echo %%i)>~a.txt
  5. (for /l %%a in (1 1 9999) do echo %%a)>~t.txt
  6. for /f %%a in ('findstr /rxg:~a.txt t.txt') do (
  7.   set var=!var! %%a
  8.   set /a n+=1
  9.   if !n!==6 (>>b.txt echo !var!&set var=&set n=)
  10. )
  11. (echo !var!)>>b.txt%不足6个数的部分%
  12. del ~a.txt ~t.txt
  13. start b.txt
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 28楼 的帖子

因为 for /f + findstr 效率很低。

你说的是把findstr嵌在in里面吗?理论上效率应该不会很低吧。
应该与先将findstr的结果保存到文件,再for /f 解析文件差不多。findstr的效率不低。要实现六列一行,用for /f是必不可少的。

====================================
是在 for /f 的 in 中命令的运行方式(cmd /c command)影响效率吗?
因为要额外启动一个CMD,所以速度要慢一点。但应该不影响解析效率吧。
照这样说,所有用 for /f 解析命令输出的方法都对速度有一定影响,也就是增加了总的运行时间,折算起来就相当于降低了效率。


PS:19楼代码中 findstr /rxg:~a.txt t.txt,t.txt前面写掉了~。

[ 本帖最后由 zqz0012005 于 2009-2-27 08:49 编辑 ]
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表