[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
谢谢各位高手,喜出望外,提供了这么代码和思路!
测试了一下,十楼以下的四个代码都通过了测试,CrLf 的代码效率最高,gawk效率高的惊人,看来第三方软件,有时也值得一用。CrLf 的纯DOS代码运行也是最快的。
再次表示感谢!

TOP

回复 15# xxpinqz


    那是 terse 的绝招,被偷学了,嘿嘿

TOP

本帖最后由 pan528 于 2013-5-27 18:45 编辑

按crlf的程序结构,改造了一下我的升序的批命令,效率提高了许多:
  1. @echo off
  2. title 对目录文本按升序排列
  3. if "%~1"=="" goto:Ascending
  4. set File=%~snx1
  5. if exist A%File% del A%File%
  6. echo 正在对文本中的子项按升序排列,请稍候 ...
  7. (for /f "tokens=1* delims=_" %%i in ('%0^|sort') do echo %%j)>A%File%
  8. start A%File%
  9. exit /b
  10. :Ascending
  11. setlocal enabledelayedexpansion
  12. for /f "tokens=1* delims=_" %%i in (%File%) do (
  13. set m=%%i
  14. if "!m:~0,1!" == "0" set x=%%i echo !m:~0,10!_%%i_%%j
  15. echo !x:~0,10!_%%i_%%j
  16. )
  17. endlocal
  18. goto :eof
复制代码
但想请教一下crlf,我没有理解“if "%~1"=="" goto fun”,这段语句,拖拽时,“"%~1"=="" ”是怎么回事?

TOP

本帖最后由 xxpinqz 于 2013-5-27 22:23 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. title 对目录文本按升序排列
  3. if "%~1"=="" goto :eof
  4. set File=%~snx1
  5. (for /f "tokens=1* delims=_" %%i in (%File%) do (
  6.         set m=%%i
  7.         if "!m:~0,1!" == "0" set x=%%i
  8.         echo !x:~0,10!_%%i_%%j
  9. ))>$
  10. echo 正在对文本中的子项按升序排列,请稍候 ...
  11. (for /f "tokens=1* delims=_" %%i in ('sort $') do echo %%j)>A%File%
  12. start A%File%
  13. del $&exit /b
复制代码
你这样理解就很简单了
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表