如何创建一行命令来删除一定数量的文件夹

如何创建一行命令来删除一定数量的文件夹

我正在尝试创建一个一行命令,它将获取所有与模式匹配的目录并删除其中一定数量的目录。

假设我有一个这样的目录:

C:/
   tmp/
       www/
          01/
          02/
          03/
          04/
          05/

而且我只想保留最新的 2 个文件夹0504

我有一个 for 循环,可以输出所有文件夹,我遇到问题的部分是计数超过一定数量:

> for /f "tokens=*" %G in ('dir /b /a:d "C:\tmp\www\*"') do echo Found %G
Found 20161201004853
Found 20161201005125
Found 20161201005246

我尝试添加计数器,但我不知道如何分离命令,因为它们都在一行上。尽管我在 Google 上搜索了很多方法,但我希望这里有人知道。

与往常一样,如果有更好的方法来做到这一点,我也会接受。

答案1

这将删除除最后 2 个文件夹之外的所有文件夹(假设它们按字母顺序排列)

只需将该行放入 .cmd/.bat 文件中并在父文件夹内执行即可

。可以通过传递给命令的参数 (%1) 来控制文件数量。可以通过“dir /b /on”来控制删除最后一个或第一个文件夹

setlocal EnableDelayedExpansion & set x=0 & for /f %%f in ( 'dir /b /o-n' ) do ( set /a x+=1 &  if !x! lss 3 rd /s/q %%f )

相关内容