使用forfiles命令删除小于指定大小文件时误删全部文件,该如何修正?
解决forfiles误删所有文件的问题
我来帮你搞定这个问题!你的命令核心问题是语法顺序错误,导致大小判断的逻辑完全没生效,所以才会删掉所有文件。
错误原因分析
你原来的命令:
forfiles /S /M * /C "cmd /c del if @fsize LEQ 148576 echo @path"
这里del被放在了if前面,cmd会把if、@fsize这些词当成del的目标文件名(而不是条件判断的一部分)。相当于每个文件都会触发del if ...的无效命令,同时因为没有真正的条件过滤,forfiles遍历到的所有文件都被错误处理了。
正确的命令写法
把条件判断放在最前面,让cmd先检查文件大小,满足条件再执行删除:
forfiles /S /M * /C "cmd /c if @fsize LEQ 148576 del @path"
额外建议:先测试再删除
如果担心误删,可以先把del @path换成echo 即将删除: @path,先预览哪些文件会被处理,确认逻辑正确后再替换成del:
forfiles /S /M * /C "cmd /c if @fsize LEQ 148576 echo 即将删除: @path"
另外,@path会自动返回带引号的文件路径,所以即使文件名里有空格也能正常处理,不用额外加引号。
内容的提问来源于stack exchange,提问作者Dracoder
相关产品推荐
相关产品推荐

