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

回复 13楼 的帖子

谢谢
我就是阅读了那个贴才有我9楼的修改,gawk之强值得学习

TOP

经测试14楼的效率比7楼的略低,难道是findstr和find查询效率的原因?

TOP

  1. @echo off
  2. for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do set ID_%%i=0
  3. for /f %%I in ('set ID_') DO set/a n+=1
  4. echo %n%&pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  虽然楼上的代码避免了使用临时文件,但是,和其他使用了临时文件的代码相比,效率是很低下的,原因我在前面已经提过,那就是频繁地使用了 set /a 语句。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  1. @echo off
  2. for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do set ID_%%i=0
  3. (for /f "delims=" %%i in ('set ID_') do echo.)>tmp
  4. for %%i in (tmp) do set/a n=%%~zi/2
  5. echo.%n%
  6. pause
复制代码
1万个ID_测试,比14楼的依然慢了0.28秒,惭愧一个。。。

[ 本帖最后由 hanyeguxing 于 2010-4-8 18:43 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 FOR 于 2010-4-7 20:39 发表
这样呢?@echo off
for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do set ID_%%i=0
set ID_>tmp
for /f "tokens=3 delims= " %%I in ('find /c /v "" tem') do echo %%I
pause


抄袭14楼的,然后改了下:
  1. @echo off
  2. for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do set ID_%%i=0
  3. set ID_|find /c "0"
  4. pause
复制代码
呵呵,1万个ID_测试,快了0.1秒

[ 本帖最后由 hanyeguxing 于 2010-4-8 18:42 编辑 ]
2

评分人数

    • namejm: 不用临时文件,速度还那么快,真难得。PB + 10
    • x9tiancmd: set * | find 好方法PB + 5
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2010-4-8 18:24 发表


抄袭14楼的,然后改了下:@echo off
for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do set ID_%%i=0
set ID_|find /c "0"
pause呵呵,1万个ID_测试,快了0.1秒


按题目新建 文件md abc>nul&pushd abc& for /l %%i in (1,1,1000) do cd.>1_%%i.txt
试了下:

find /c "0"   改成 14 楼的 find /c /v ""
还要快些,  呵呵, 真是长见识了

[ 本帖最后由 x9tiancmd 于 2010-4-9 21:07 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

返回列表