返回列表 发帖

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

我想查询一个目录下所有.DBF文件大小超过30G的,有的话输出到一个文本里,批处理如下:
批处理1:
@echo off
set /a size=30*1024*1024*1024
for /r %%i in (*.dbf) do if %%~zi GTR %size% echo "%%i" >check_size.txtCOPY
批处理2:
@echo off
for /r %%i in (*.dbf) do if %%~zi/30/1024/1024/1024 GTR 1 echo "%%i" >check_size.txtCOPY
两个都有问题的,第一个溢出了,第二个查询不出来,我试了一个32G的文件。请大家帮忙看看,谢了!

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

TOP

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

TOP

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

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

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

本帖最后由 kevinll 于 2013-3-28 14:24 编辑

我这还有问题,关于find.exe, 我指定-path 不管用,在windows上,-path怎么用呢?可以这样吗:-path e:\data

TOP

在windows上用UNIX的命令,每次用都要先COPY吗?

TOP

试了一个 -size +1048576k,即1G,却查不出来,明明有一个24G的文件,:

find.exe    -name *.DBF -size +1048576k

TOP

谢谢各位。不过谁给看i看这个问题啊:
试了一个 -size +1048576k,即1G,却查不出来,明明有一个24G的文件:

find.exe    -name *.DBF -size +1048576k

TOP

返回列表