找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 88574|回复: 27

[文件操作] 批处理如何查询大小超过30G的文件?

[复制链接]
发表于 2013-3-27 11:53:23 | 显示全部楼层 |阅读模式
我想查询一个目录下所有.DBF文件大小超过30G的,有的话输出到一个文本里,批处理如下:
批处理1:
  1. @echo off
  2. set /a size=30*1024*1024*1024
  3. for /r %%i in (*.dbf) do if %%~zi GTR %size% echo "%%i" >check_size.txt
复制代码
批处理2:
  1. @echo off
  2. for /r %%i in (*.dbf) do if %%~zi/30/1024/1024/1024 GTR 1 echo "%%i" >check_size.txt
复制代码
两个都有问题的,第一个溢出了,第二个查询不出来,我试了一个32G的文件。请大家帮忙看看,谢了!
发表于 2013-3-27 12:05:05 | 显示全部楼层
32位CMD只支持32位有符号整数
 楼主| 发表于 2013-3-27 12:27:21 | 显示全部楼层
我的系统是64位的,那CMD应该也是64位的吧? 如果是因为数值太大的话,那么我的问题就无解了吗?
 楼主| 发表于 2013-3-27 12:29:56 | 显示全部楼层
字节能换成M或者G吗?这样位数就够了
发表于 2013-3-27 12:46:19 | 显示全部楼层
改下思路:用dir搜索文本连带文件大小到一个txt中,再挑出超过大小的。
这样效率可能高点。
 楼主| 发表于 2013-3-27 13:56:13 | 显示全部楼层
如何用DIR只显示文本名字和文本大小呢?
发表于 2013-3-27 15:57:02 | 显示全部楼层
  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. FOR /F "DELIMS=" %%S IN ('DIR/S/B/A-D *.DBF')DO (
  4.  SET SIZE=0000000000%%~ZS
  5.  IF "!SIZE:~-11!" GTR "32212254720" ECHO %%~S
  6. )
  7. PAUSE
复制代码
发表于 2013-3-27 22:23:39 | 显示全部楼层
  1. find.exe . -size +30G
复制代码
http://www.bathome.net/thread-1114-1-1.html
 楼主| 发表于 2013-3-28 09:39:23 | 显示全部楼层
本帖最后由 kevinll 于 2013-3-28 09:42 编辑

回复 7# cutebe

谢谢!测试了几次,都成功了。不过有个问题,这一句:SET SIZE=0000000000%%~ZS ,我看赋值后SIZE也是为-2147483648啊,前面补这么多0什么意思呢?
 楼主| 发表于 2013-3-28 10:00:06 | 显示全部楼层
回复 8# Batcher


    您这个我试了,find.exe . -size +30G,报错了:
find.exe: invalid -size type `G'
用法是什么呢?能否把结果输出到一个文本里去呢?
发表于 2013-3-28 10:19:02 | 显示全部楼层
回复 10# kevinll
  1. find.exe -size +30000000k
复制代码
 楼主| 发表于 2013-3-28 10:49:38 | 显示全部楼层
回复 9# kevinll

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "DELIMS=" %%S IN ('DIR/S/B/A-D *.DBF')DO (
 SET SIZE=0000000000%%~ZS
 IF "!SIZE:~-11!" GTR "32212254720" ECHO %%~S>>out.txt
)
PAUSE

发现了一个问题,不能递归,如果有子文件的话,返回的结果少
 楼主| 发表于 2013-3-28 10:54:46 | 显示全部楼层
回复 11# Batcher


    这次可以运行了,不过能进行过滤吗?比如说查找.DBF文件。
还有命令没有帮助文档啊?我也下了几个别的命令,都没有发现帮助文档
发表于 2013-3-28 11:52:45 | 显示全部楼层
回复  Batcher


    这次可以运行了,不过能进行过滤吗?比如说查找.DBF文件。
还有命令没有帮助文档 ...
kevinll 发表于 2013-3-28 10:54
  1. find.exe -name *.DBF -size +30000000k
复制代码
find --help 可以看到简单的帮助。详细的帮助可以在 Google 中搜索 unix find
发表于 2013-3-28 11:59:33 | 显示全部楼层
新手学习之中……………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 03:54 , Processed in 0.021003 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表