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

时间:2017-05-24 22:21:54

标签: windows batch-file for-loop cmd delete-file

这一直在杀我寻找一个快速的,可能是for循环的代码(尽可能小),它将删除指定目录中的所有文件(不是文件夹)以及所有不属于任何类型的子目录。 apk(在这种情况下)

这是我登陆的内容,但它什么也没做。 (顺便说一句,我已经将%current%设置为我脚本中其他位置的特定文件夹)

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 个答案:

答案 0 :(得分:1)

当您在集合中指定的不仅仅是文件名模式(即括号中的部分)时,

for /R会导致意外结果。因此,您需要将路径部分放在/R后面。 (如果没有指定任何内容,则默认为当前目录。)因此以下内容应该有效:

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