dos批处理,删除指定文件外的其他文件怎么做?

程序运行中间生成很多文件,但只有最终的文件有用,所以想保留一个文件,其他删除。要求保留.\object\文件夹下的*.obj文件,其他文件全部删除,求批处理代码,最好有解... 程序运行中间生成很多文件,但只有最终的文件有用,所以想保留一个文件,其他删除。 要求保留 .\object\文件夹下的 *.obj 文件,其他文件全部删除,求批处理代码,最好有解释。 先备份*.obj,然后删除所有,再恢复*.obj的思路不好,希望像linux类似的方法,rm * --exclude *.obj ,简单明了 展开
 我来答
yyykkkyyyy
推荐于2017-10-09 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3310万
展开全部
操作指定的容易而排除指定的难,dos或windows下cmd中并无简单命令可以删除指定某后缀之外的文件,一般可加上某属性使其不被删除,之后再去掉所加属性比如:
attrib +h *.obj
del/a-h *.*
attrib -h *.obj
追问
我用for循环的思路,逐个列出目录下的文件,判断后缀是否obj
我写的测试程序是这样的:
for /r %%i in (.\obj\*) do @echo %%i

这样可以列出obj目录下的文件

加上if之后

for /r %%i in (.\obj\*) do if not %%i=="*.obj" @echo %%i

仍然会列出所有文件,包括*.obj的文件

是不是不能用通配符?
追答
谢谢采纳!
我之前说的是可行的,在真正dos中就是用这种方法
你评论里写法是正确的。(适用说明:for /r 中用通配符集 不会列出隐藏文件,所以隐藏文件不会处理)
if 的几种表达式里仅if exist 支持通配符,意为判断是否存在某某文件或文件夹
如果用到for命令,则更复杂情况均可解决,并可能不止有一种方案
比如除可用if %%~xi判断外还可用
for /f "delims=" %%i in ('dir/b/s/a-d^|findstr/ev "\.obj"') do echo %%i
这种可显示当前路径下的各级文件夹中除*.obj之外的所有文件包括隐藏的
仅排除某后缀名应该说if not "%%~xi"==".obj"这种更好,
而findstr功能较强,可类似"正则式"筛选 运用更灵活简捷
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式