dos批处理,删除指定文件外的其他文件怎么做?
程序运行中间生成很多文件,但只有最终的文件有用,所以想保留一个文件,其他删除。要求保留.\object\文件夹下的*.obj文件,其他文件全部删除,求批处理代码,最好有解...
程序运行中间生成很多文件,但只有最终的文件有用,所以想保留一个文件,其他删除。 要求保留 .\object\文件夹下的 *.obj 文件,其他文件全部删除,求批处理代码,最好有解释。 先备份*.obj,然后删除所有,再恢复*.obj的思路不好,希望像linux类似的方法,rm * --exclude *.obj ,简单明了
展开
1个回答
展开全部
操作指定的容易而排除指定的难,dos或windows下cmd中并无简单命令可以删除指定某后缀之外的文件,一般可加上某属性使其不被删除,之后再去掉所加属性比如:
attrib +h *.obj
del/a-h *.*
attrib -h *.obj
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功能较强,可类似"正则式"筛选 运用更灵活简捷
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询