删除子目录中的所有文件除了给定的扩展名(在Windows BATCH中)

问题描述:

这一直在杀我寻找一个快速,可能为循环,代码(尽可能小),将删除所有文件(不是文件夹)在指定的目录和所有子目录中,不是.apk的任何类型(在本例中)删除子目录中的所有文件除了给定的扩展名(在Windows BATCH中)

这是我登陆的,但它什么都不做。 (顺便说一句,我已经有%电流%设置为特定文件夹中的其他地方我的脚本)

For /R %%f in (%current%\Data\TEMP\*) do (
    if not %%~xf==.apk del /S "%%f" 
) 

在控制台此命令的作用,正是我想要它。我只需要右键点击直接打开一个新的命令窗口,我想开始清理。但是无论什么原因,我不能让它在批处理脚本中工作。

For /r %f in (*) do if not %~xf==.apk del /S "%f" 

任何人都有任何想法,为什么第一个for循环失败了我?

+1

'为/ R “当前%%\ DATA \ TEMP” %% F IN(*)做(如果不是“%%〜xf”==“。apk”del“%%〜f”)' – aschipfl

+0

这就是IT!现在,我不想只拿它跑。我想知道我哪里错了,为什么。 – Noah

+0

'for/R'命令[需要指定路径](https://ss64.com/nt/for_r.html)。 – SomethingDark

for /R当您在集合(即圆括号之间的部分)中指定的不仅仅是文件名称模式时,可能会导致意外的结果。所以你需要把路径部分立即放在/R之后。 (如果没有指定,则默认为当前目录罢了。)所以下面应该工作:

for /R "%current%\Data\TEMP" %%f in (*) do (if not "%%~xf"==".apk" del "%%~f")