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

[文件操作] 批处理如何删除大小为0KB的文件?

在批处理中,如何删除大小为0KB的文件?求各位大侠了。

本帖最后由 happy886rr 于 2016-4-6 13:02 编辑

回复 1# CGQNET
  1. @echo off&for /f "delims=" %%a in ('dir /a-d /b /s') do (if %%~za equ 0 del /f /q "%%a")
复制代码

TOP

  1. hash /z::~0 /do:"del ""%%s"""
复制代码
第三方工具 HASH 下载:http://www.bathome.net/s/tool/?key=hash&keymode=4
3.0 以上版本才支持 /do 开关

TOP

回复 3# CrLf
大师,我发现批处理可以和C语言混编。利用tcc的-run参数,无需编译成exe直接就能运行,类似C脚本。
  1. /*
  2. @echo off&pushd "%~dp0tcc"&cls
  3. ren %0 "%~n0.c"&tcc.exe -run "%~dp0%~n0.c"&ren "%~dp0%~n0.c" "%~nx0"
  4. pause>nul
  5. exit
  6. */
  7. #include <stdio.h>
  8. main()
  9. {
  10. printf("It woeks!");
  11. return 0;
  12. }
复制代码
1

评分人数

TOP

回复 4# happy886rr


   

TOP

回复 4# happy886rr


    这种注释屏蔽法只要其他语言的代码解释器支持命令行模式且其注释与批处理的不冲突,基本上都可以跟批处理混编的

TOP

  1. forfiles /m *.* /c "cmd /c if @fsize==0 del @file"
复制代码

TOP

回复 6# pcl_test
这个主要是模拟不编译C文件,就运行,居然也成功,可能是tcc在内存里编译了吧。这样实际效果等同于脚本语言,只是tcc库少了许多,毕竟体积才200k多。

TOP

谢谢诸位大侠!

TOP

回复 2# happy886rr

此法可能还不够完美,我尝试建立几个空的.txt文件(文件属性显示是0KB),一个改名为.ppt,另一个改名为.doc。执行代码:
    @echo off
    FOR /f "delims="  %%a IN ('dir *.ppt /s /a /b')  DO (if %%~za equ 0 DEL /f /s /q "%%a")
   FOR /f "delims="  %%b IN ('dir *.doc /s /a /b' ) DO (if %%~za equ 0 DEL /f /s /q "%%b")
   pause

结果看到,第一行执行正常(能删),但第二语句不能执行,找不到原因,求大侠了!

TOP

回复 3# CrLf

hash 是好东西,但它只能删除当前目录的0KB文件,深层文件夹的0KB文件就不行了。

TOP

回复 11# CGQNET


    加 /s 开关即可

TOP

本帖最后由 再世情緣 于 2016-4-23 21:30 编辑

回复 10# CGQNET


    你那第二行有个变量名错了

FOR /f "delims="  %%b IN ('dir *.doc /s /a /b' ) DO (if %%~za equ 0 DEL /f /s /q "%%b")

应该是
  1. FOR /f "delims="  %%b IN ('dir *.doc /s /a /b' ) DO (if %%~zb equ 0 DEL /f /s /q "%%b")
复制代码
或者你可以写在一起
  1. FOR /f "delims="  %%a IN ('dir *.doc *.txt /s /a /b 2^>nul' ) DO (if %%~za equ 0 DEL /f /s /q "%%~fa")
复制代码

TOP

问题已经解决,谢谢!

TOP

回复 12# CrLf

我已加了开关,如下

hash /z::~0 /do:"del ""%%s"" /s"
   
好像不行,请赐教,谢谢!

TOP

返回列表