我有一个根文件夹(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 将包含目录名称,而您需要文件。
你需要采取两步方法,
- 迭代文件夹,最好使用
for /D
- 迭代文件(不包括可能的子文件夹)类似于你的尝试
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,也许我应该使用其他方法来列出每个子文件夹,而不是*?
好的,我找到了原因,子文件夹有下一个子文件夹,所以一定是代码中的下一个选项,但我尝试了一下