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

[文件操作] 【已解决】求批处理列出小于10m的文件的路径

本帖最后由 我是一只小小鸟 于 2018-7-4 07:59 编辑
  1. title %~0
  2. (for /f "delims=" %%a in ('dir /a-d/b/s "./"') do @echo;%%a)>"aa.txt"&pause
复制代码
上面这个代码,可以列出所有文件的路径,不过我想只列出文件小于10m的,这样应该如何修改呢?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 9# Batcher
这测试代码收下了不错很好玩,哈哈
wmic效率整体比if慢不到一倍,但是出错率为0

wmic:
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 420
Ticks             : 4208530
TotalDays         : 4.8709837962963E-06
TotalHours        : 0.000116903611111111
TotalMinutes      : 0.00701421666666667
TotalSeconds      : 0.420853
TotalMilliseconds : 420.853

for+dir+if
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 214
Ticks             : 2141939
TotalDays         : 2.47909606481481E-06
TotalHours        : 5.94983055555556E-05
TotalMinutes      : 0.00356989833333333
TotalSeconds      : 0.2141939
TotalMilliseconds : 214.1939
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

可知管理员用的应该是机械硬盘。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 codegay 于 2018-7-6 01:29 编辑

我用管理员的方法在我电脑上对比了一下结果:
  1. d:\gayhub\FCNNIC\nimwalkfiles>powershell -c "Measure-Command {Start-Process 6.bat -wait}" | findstr
  2. "TotalSeconds"
  3. TotalSeconds      : 0.3320223
  4. d:\gayhub\FCNNIC\nimwalkfiles>powershell -c "Measure-Command {Start-Process 3.bat -wait}" | findstr
  5. "TotalSeconds"
  6. TotalSeconds      : 4.8222866
  7. d:\gayhub\FCNNIC\nimwalkfiles>powershell -c "Measure-Command {Start-Process nimwalkfiles.exe -wait}" | findstr "TotalSeconds"
  8. TotalSeconds      : 0.3587203
复制代码
笔记本 3代I7 固态硬盘


完整的nim语言代码,nim语言里可以方便地过程重载出像批处理和shell用 > 操作符写文件:
  1. import os
  2. proc `>`(content, filename: string) =
  3.     writeFile(filename, content)
  4. var result = ""
  5. for f in walkDirRec(getAppDir(),{pcFile}):
  6.     if getFileSize(f) < 1024*1024*10 :
  7.         result.add(f)
  8.         result.add("\r\n")
  9.         result > "test.txt"
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 9# Batcher


    感谢管理员,给出了这么详细的解答。

TOP

回复 7# /zhqsystem/zhq


我的测试环境是Win7,测试目录下有28个文件
C:\Test>dir /b /s /a-d | find /c ":"
28

3楼代码测试耗时4.3秒
C:\Test>powershell -c "Measure-Command {Start-Process test.bat -wait}" | findstr "TotalSeconds"
TotalSeconds      : 4.3815649

6楼代码测试耗时2.5秒
C:\Test>powershell -c "Measure-Command {Start-Process test.bat -wait}" | findstr "TotalSeconds"
TotalSeconds      : 2.5144024

不知道你的测试环境和测试结果分别是怎样的呢?
1

评分人数

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

TOP

本帖最后由 codegay 于 2018-7-5 01:50 编辑

回复 6# Batcher


   
    论舍近求远。我来一个更远的。
nim语言版:
  1. import os
  2. for f in walkDirRec(getAppDir(),{pcFile}):
  3.     if getFileSize(f) < 1024*1024*10 :
  4.         echo f
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 6# Batcher


    这不是舍近求远WMIC自动过滤远高于IF判断
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq


没有必要舍近求远
  1. @echo off
  2. (for /f "delims=" %%a in ('dir /a-d /b /s') do (
  3.     if %%~za lss 10485760 (
  4.         echo;%%a
  5.     )
  6. ))>"aa.txt"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# 狄钦dQ


      非常感谢

TOP

回复 3# /zhqsystem/zhq


    非常感谢

TOP

  1. for /f "tokens=* delims=" %%i in ('dir/a-d/s/b ".\*.*"')do if /i not "%%~fi"=="%~f0" call:1 "%%~fi"
  2. pause
  3. goto:eof
  4. :1
  5. set "#="
  6. set "#=%~f1"
  7. set "#=%#:\=\\%"
  8. Wmic.exe datafile Where 'Name="%#%" And FileSize^<"10485760"' get FileSize,Name /format:list
  9. goto:eof
复制代码
1

评分人数

这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

本帖最后由 狄钦dQ 于 2018-7-4 01:12 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "space=            "
  4. set info=大小/单位%space%
  5. echo;!info:~0,12! 文件名
  6. for /f "delims=" %%a in ('dir /a-d /b /os') do (
  7. if %%~za lss 1024 (
  8.     set /a num=%%~za
  9.     set size=%space%!num!
  10.     set unit=B%space%
  11.     echo;!size:~-5! !unit:~0,6! %%~fa
  12. ) else (
  13. if %%~za lss 1048576 (
  14.     set /a num=%%~za/1024
  15.     set size=%space%!num!
  16.     set unit=KB%space%
  17.     echo;!size:~-5! !unit:~0,6! %%~fa
  18. ) else (
  19. if %%~za leq 10485760 (
  20.     set /a num=%%~za/1048576
  21.     set size=%space%!num!
  22.     set unit=MB%space%
  23.     echo;!size:~-5! !unit:~0,6! %%~fa
  24. ))))
  25. pause&exit
复制代码
相关参考:http://www.bathome.net/thread-35936-1-3.html
1

评分人数

TOP

返回列表