如何通过批处理限制搜索硬盘上指定大小文件(输入的数为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 文件: %%Fecho 大小: !file_size! 字节
)
)
endlocal
我可以搜索某文件夹及子文件夹下指定大小的文件,,但这里无论是我输入的min_size,还是最后显示的文件大小,都是按字节计算的,我的要求:min_size=请输入最小文件大小(单位MB),最后显示的也是文件多少MB,,我搜索了好多,好像应该用set /a file_size="%%~zF"/1024/1024进行换算,但是对于大文件会提示“无效数字 数字精确度限为 32 位”,也就是文件大小超过2147483647字节的都会报错,不知道大家有什么好办法没有 ?(字节这个单位太小了,我搜索限制多大小的文件,喜欢用MB计量)
等大佬帮你解决吧,看不懂 upe2里俺写过一段算法 szwp 发表于 2024-2-19 17:01
upe2里俺写过一段算法
upe2.不知道是个啥 kb有点冒险,b还可以,遇到有用又大小一样的概率小得多了,还有就是批处理很慢,费时间,网络里现成的全盘搜索很多。 likeyouli 发表于 2024-2-19 17:15
upe2.不知道是个啥
群文件里 szwp 发表于 2024-2-19 17:47
群文件里
告诉我群号吧,,想加入组织 窄口牛 发表于 2024-2-19 17:44
kb有点冒险,b还可以,遇到有用又大小一样的概率小得多了,还有就是批处理很慢,费时间,网络里现成的全盘 ...
主要是为了练习批处理,,能用命令解决的,绝不用gui图形,否则怎能练好命令! 我这个需求,批处理如果解决不了,使用powerShell不知道能否解决,据说ps强大的多,可惜我还没空研究。 解决文件夹病毒就是批处理全盘搜固定大小的文件,就把文件夹.exe都清理了(当然还得解决主程序,不能只删除这些)。 likeyouli 发表于 2024-2-19 18:04
告诉我群号吧,,想加入组织
1067888280 rem 设置文件的大小,文件属性实际大小值
set num=23
rem 设置文件后缀名
set suf=exe
set fus=txt
set root="%cd%"
echo %cd%
call :find %root%
pause & exit
:find
CD %1
for /F %%i in ('dir /A:-D /B *.%suf%;*.%fus%') do if ERRORLEVEL 0 call :deal %%i
for /F %%i in ('dir /A:D /B') do call :find %%i
if "%cd%"==%root% pause&exit
CD ..
goto :EOF
:deal
echo 正在查找 %cd%
set file=%1
for /f %%I in ('dir /A /B %file%') do set numx=%%~zI
rem 对符合条件的文件进行处理
if %num%==%numx% del /s /q %file%
goto :EOF
:EOF
多谢提供分享! 谢谢分享 赞,谢谢分享。 学习了,谢谢楼主。 本帖最后由 crtrccrtt 于 2024-2-20 11:11 编辑
根目录含空格,也有问题==循环不停
11#楼的批处理,不支持含空格的文件,
页:
[1]