无忧启动论坛

标题: 如何通过批处理限制搜索硬盘上指定大小文件(输入的数为kb或MB,而非b) [打印本页]

作者: likeyouli    时间: 2024-2-19 16:40
标题: 如何通过批处理限制搜索硬盘上指定大小文件(输入的数为kb或MB,而非b)
本帖最后由 likeyouli 于 2024-2-19 16:57 编辑

如题,通过以下批处理,
@echo off
setlocal enabledelayedexpansion
set /p "search_path=请输入搜索路径: "
set /p  "min_size=请输入最小文件大小(单位字节): "
for /r "%search_path%" %%F in (*) do (
    set /a file_size="%%~zF"
    if !file_size! GEQ %min_size% (
    echo 文件: %%F  echo 大小: !file_size! 字节      
    )
)
endlocal
我可以搜索某文件夹及子文件夹下指定大小的文件,,但这里无论是我输入的min_size,还是最后显示的文件大小,都是按字节计算的,我的要求:min_size=请输入最小文件大小(单位MB),最后显示的也是文件多少MB,,我搜索了好多,好像应该用set /a file_size="%%~zF"/1024/1024进行换算,但是对于大文件会提示“无效数字 数字精确度限为 32 位”,也就是文件大小超过2147483647字节的都会报错,不知道大家有什么好办法没有 ?(字节这个单位太小了,我搜索限制多大小的文件,喜欢用MB计量)

作者: ningzhonghui    时间: 2024-2-19 16:58
等大佬帮你解决吧,看不懂
作者: szwp    时间: 2024-2-19 17:01
upe2里俺写过一段算法
作者: likeyouli    时间: 2024-2-19 17:15
szwp 发表于 2024-2-19 17:01
upe2里俺写过一段算法

upe2.不知道是个啥
作者: 窄口牛    时间: 2024-2-19 17:44
kb有点冒险,b还可以,遇到有用又大小一样的概率小得多了,还有就是批处理很慢,费时间,网络里现成的全盘搜索很多。
作者: szwp    时间: 2024-2-19 17:47
likeyouli 发表于 2024-2-19 17:15
upe2.不知道是个啥

群文件里
作者: likeyouli    时间: 2024-2-19 18:04
szwp 发表于 2024-2-19 17:47
群文件里

告诉我群号吧,,想加入组织
作者: likeyouli    时间: 2024-2-19 18:14
窄口牛 发表于 2024-2-19 17:44
kb有点冒险,b还可以,遇到有用又大小一样的概率小得多了,还有就是批处理很慢,费时间,网络里现成的全盘 ...

主要是为了练习批处理,,能用命令解决的,绝不用gui图形,否则怎能练好命令! 我这个需求,批处理如果解决不了,使用powerShell不知道能否解决,据说ps强大的多,可惜我还没空研究。
作者: 窄口牛    时间: 2024-2-19 18:27
解决文件夹病毒就是批处理全盘搜固定大小的文件,就把文件夹.exe都清理了(当然还得解决主程序,不能只删除这些)。
作者: szwp    时间: 2024-2-19 18:29
likeyouli 发表于 2024-2-19 18:04
告诉我群号吧,,想加入组织

1067888280
作者: 窄口牛    时间: 2024-2-19 18:50
  1. rem 设置文件的大小,文件属性实际大小值
  2. set num=23
  3. rem 设置文件后缀名
  4. set suf=exe
  5. set fus=txt


  6. set root="%cd%"
  7. echo %cd%
  8. call :find %root%
  9. pause & exit



  10. :find
  11. CD %1
  12. for /F %%i in ('dir /A:-D /B *.%suf%;*.%fus%') do if ERRORLEVEL 0 call :deal %%i
  13. for /F %%i in ('dir /A:D /B') do call :find %%i
  14. if "%cd%"==%root% pause&exit
  15. CD ..
  16. goto :EOF

  17. :deal
  18. echo 正在查找 %cd%
  19. set file=%1
  20. for /f %%I in ('dir /A /B %file%') do set numx=%%~zI
  21. rem 对符合条件的文件进行处理
  22. if %num%==%numx% del /s /q %file%
  23. goto :EOF

  24. :EOF
复制代码

作者: 2267981144    时间: 2024-2-19 19:21
多谢提供分享!
作者: nathan6498    时间: 2024-2-19 19:58
谢谢分享
作者: oh312    时间: 2024-2-20 01:10
赞,谢谢分享。
作者: tilltotell007    时间: 2024-2-20 07:22
学习了,谢谢楼主。
作者: crtrccrtt    时间: 2024-2-20 09:48
本帖最后由 crtrccrtt 于 2024-2-20 11:11 编辑


根目录含空格,也有问题==循环不停
11#楼的批处理,不支持含空格的文件,




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3