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

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

我想查询一个目录下所有.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的文件。请大家帮忙看看,谢了!

32位CMD只支持32位有符号整数

TOP

我的系统是64位的,那CMD应该也是64位的吧? 如果是因为数值太大的话,那么我的问题就无解了吗?

TOP

字节能换成M或者G吗?这样位数就够了

TOP

改下思路:用dir搜索文本连带文件大小到一个txt中,再挑出超过大小的。
这样效率可能高点。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

如何用DIR只显示文本名字和文本大小呢?

TOP

  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
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

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

TOP

本帖最后由 kevinll 于 2013-3-28 09:42 编辑

回复 7# cutebe

谢谢!测试了几次,都成功了。不过有个问题,这一句:SET SIZE=0000000000%%~ZS ,我看赋值后SIZE也是为-2147483648啊,前面补这么多0什么意思呢?

TOP

回复 8# Batcher


    您这个我试了,find.exe . -size +30G,报错了:
find.exe: invalid -size type `G'
用法是什么呢?能否把结果输出到一个文本里去呢?

TOP

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

TOP

回复 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

发现了一个问题,不能递归,如果有子文件的话,返回的结果少

TOP

回复 11# Batcher


    这次可以运行了,不过能进行过滤吗?比如说查找.DBF文件。
还有命令没有帮助文档啊?我也下了几个别的命令,都没有发现帮助文档

TOP

回复  Batcher


    这次可以运行了,不过能进行过滤吗?比如说查找.DBF文件。
还有命令没有帮助文档 ...
kevinll 发表于 2013-3-28 10:54
  1. find.exe -name *.DBF -size +30000000k
复制代码
find --help 可以看到简单的帮助。详细的帮助可以在 Google 中搜索 unix find

TOP

新手学习之中……………………

TOP

返回列表