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

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

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

回复 21# codegay
可以把指针索引释放到内存条里,这样系统的原始文件在ssd上,索引在内存里,可以有接近内存的响应速度。我以前把win7系统全部跑在内存里,连硬盘,ssd都不需要,只需要个大内存条。

TOP

回复 20# happy886rr


    好的,感谢。以前都没听说过。以后再找时间来玩。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 happy886rr 于 2016-4-24 19:52 编辑

回复 17# codegay
用wimboot,或者差分vhd,系统文件都是指针,或者用RAM系统。
1

评分人数

TOP

回复 17# codegay


    绝不告诉你我小时候在别人电脑上玩游戏,嫌文件太多找着麻烦,于是把除了 exe 以外的所有文件都删掉
1

评分人数

TOP

本帖最后由 Nsqs 于 2016-4-24 17:25 编辑

关于0kb删除
  1. @echo off&setlocal enabledelayedexpansion
  2. :return
  3. set/a n=-1,p=-1,cc=0
  4. for /f "delims=" %%1 in ('dir/s/b/a-d')do (
  5. if %%~z1 equ 0 (
  6. set/a p+=1
  7. set f!p!=%%1
  8. set s!p!=%%~nx1
  9. if !n! lss 9 set /a n+=1&call echo [!n!]%%~nx1
  10. ))
  11. set c=-1
  12. :select
  13.         echo 输入u表示上一页;l表示下一页;
  14. set /p input=输入要删除的编号(A表示全部删除;[0-9]表示删除第n项;s表示删除10个):
  15. if /i "%input%"=="s" call:_N
  16. if /i "%input%"=="a" call:_all
  17. if /i "%input%"=="u" set/a cc-=1, c=cc*10&call:_U
  18. if /i "%input%"=="l" set/a cc+=1, c=cc*10&call:_L
  19. if /i "%input%"=="q" exit
  20. echo %input%|findstr "[0-9]" >nul 2>nul
  21. if %errorlevel%==0 set /a c=cc*10,ss=-1&call:_del
  22. goto select
  23. :_all
  24. cls&(for /l %%1 in (0 1 %p%)do set "s%%1="&del !f%%1!&set "f%%1=")2>nul&goto :eof
  25. :_U
  26. cls&if %c% lss 0 set/a c=0,cc=0
  27. for /l %%1 in (0 1 9)do (set/a z=c+%%1
  28. call set x$=%%s!z!%%
  29. if not !x$!#==# echo [%%1]!x$!)
  30. goto :eof
  31. :_L
  32. cls&if %c% gtr %p% set/a c=c-10,cc-=1
  33. for /l %%1 in (0 1 9)do (
  34. set/a z=c+%%1
  35. call set x$=%%s!z!%%
  36. if not !x$!#==# echo [%%1]!x$!
  37. )
  38. goto :eof
  39. :_del
  40. cls&set/a ss+=1,r=0&set x$=!input:~%ss%,1!
  41. if not !x$!#==# (
  42. set/a r=c+!x$!
  43. call del %%f!r!%%
  44. goto _del
  45. )
  46. call:return
  47. goto :eof
  48. :_N
  49. cls&for /l %%1 in (0 1 10)do (
  50. set/a z=c+%%1
  51. call set x$=%%f!z!%%
  52. if not !x$!#==# del !x$!
  53. )
  54. call:return
  55. goto :eof
复制代码

TOP

回复 16# CrLf


    哈哈,应该先备份一下再操作。
前几天我信心爆棚地删删删删删删删删。。也不知道删了啥东西,现在系统死了几天现在也没能恢复过来。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 15# CGQNET


    卧槽!敢这么写也是心够大…
  1. hash /s /z::~0 /do:"echo del ""%%s"""
  2. pause
复制代码
危险操作,请确认无误后把 echo 去掉再执行

TOP

回复 12# CrLf

我已加了开关,如下

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

TOP

问题已经解决,谢谢!

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

回复 11# CGQNET


    加 /s 开关即可

TOP

回复 3# CrLf

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

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

谢谢诸位大侠!

TOP

返回列表