删除子文件夹中的文件,可选择在每个文件夹中保留一个文件

删除子文件夹中的文件,可选择在每个文件夹中保留一个文件

我有一个根文件夹(Nowy3),里面有很多子文件夹(1,2,3 等)。每个子文件夹里面都有许多文件(如 Nowy3\1\file1.1、Nowy3\1\file2.1;Nowy3\1\file3.1)。

我想制作一个 CMD 脚本,在每个子文件夹中保存一个最新文件,并删除其余较旧的文件。在单个文件夹中我可以这样做,但当文件夹有子文件夹并且子文件夹中有文件时,我无法这样做

我尝试了,但是没有用

for /f "skip=1 delims=" %F in ('dir C:\Users\M\Desktop\Nowy3\* /b/o-d') do del C:\Users\M\Desktop\Nowy3\%F /S /Q

怎么改呢?

答案1

它不起作用,因为:

  • 您正在订购文件夹按日期向后并跳过第一个。
    %F 将包含目录名称,而您需要文件。

你需要采取两步方法,

  1. 迭代文件夹,最好使用for /D
  2. 迭代文件(不包括可能的子文件夹)类似于你的尝试

for /D %D in (C:\Users\M\Desktop\Nowy3\*) do @for /f "skip=1 delims=" %F in ('dir "%D\*" /b/o-d/A-D') do @echo del "%D\%F"

如果输出看起来正常,请删除Echo前面的del

答案2

我尝试了此代码,但找不到任何文件

for /D %D in (C:\Users\MŻ\Desktop\Nowyfolder3\*) do @for /f "skip=1 delims=" %F in ('dir "%D\*" /b/o-d/A-D') do @echo del "%D\%F"

未找到文件 未找到文件 未找到文件 未找到文件

当我删除 * 时,它会显示文件Nowyfolder3,也许我应该使用其他方法来列出每个子文件夹,而不是*?

好的,我找到了原因,子文件夹有下一个子文件夹,所以一定是代码中的下一个选项,但我尝试了一下

相关内容