Board logo

标题: [文本处理] 已解决--求批处理判断文件大小? [打印本页]

作者: thp2008    时间: 2015-4-10 18:06     标题: 已解决--求批处理判断文件大小?

本帖最后由 thp2008 于 2015-4-10 19:34 编辑

要示:我需要在当前目录下运行这个批处理,批处理,自动判断当前目录及目录下的所有子目录中的所有文件,如果发现文件小于1024KB,则将发现的所有小于1024KB的文件名称及扩展名和目录路径记录在当前目录中的一个记事本文件中。

注:目录名和文件名中可能会有空格或中文字符或符号。


我在网上找到一个可以的,但是这个批处理有两个问题,1,这个只能处理当前目录,不能处理目录下的所有子目录中的文件。2,我不需要产生1.txt . 请大家帮我修改一下,谢谢。
@echo off & setlocal EnableDelayedExpansion

for %%i in (*) do (echo %%~fzi >>1.txt)  

for /f "tokens=1* delims= " %%a in (1.txt) do (

    set "zer=%%a"

    set "pat=%%b"

    if !zer! lss 1048576 (

        if not "!pat:~0,-1!"=="%~0" echo "!pat:~0,-1!"& echo "!pat!" >> info.txt

    )

)
作者: pcl_test    时间: 2015-4-10 19:05

本帖最后由 pcl_test 于 2015-4-10 19:17 编辑
  1. @echo off
  2. (for /f "delims=" %%a in ('dir /a-d /s /b ^|find /v "%~nx0"') do (
  3. if %%~za lss 1048576 echo,%%a %%~za字节
  4. ))>"结果.txt"
  5. pause
复制代码

作者: thp2008    时间: 2015-4-10 19:18

回复 2# pcl_test

非常好用,谢谢!
不知道能不能把最后的字节换成KB呀,如果麻烦就算了,不麻烦就在我改下,再次感谢!
作者: pcl_test    时间: 2015-4-10 19:24

  1. @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in ('dir /a-d /s /b ^|find /v "%~nx0"') do (
  3. if %%~za lss 1048576 (set/a size=%%~za/1024 & echo,%%a !size!KB)
  4. ))>"结果.txt"
  5. pause
复制代码

作者: pcl_test    时间: 2015-4-10 19:25

问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: thp2008    时间: 2015-4-10 19:33

太好了,60000多个文件,3000多个目录,没有这家伙,估计我得找晕。谢谢你,全部找出来了。只用了几秒钟。
作者: pcl_test    时间: 2015-4-10 19:46

系统自带的搜索可以这样设置
作者: thp2008    时间: 2015-4-10 20:08

回复 7# pcl_test


    对哟,我真是晕,谢谢!
作者: CrLf    时间: 2015-4-11 08:10

if %%~za lss 1048576 …
这样有 bug 哦,1000000000 小于 1048576




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2