我试图创build一个1行命令,将获得匹配模式的所有目录,并删除其中的一定数量。
比方说,我有这样一个目录:
C:/ tmp/ www/ 01/ 02/ 03/ 04/ 05/
而且我只想保留最新的2个文件夹05和04 。
我有一个for循环,将输出所有的文件夹,im有麻烦的部分正在计数过去一定数量:
> for /f "tokens=*" %G in ('dir /b /a:d "C:\tmp\www\*"') do echo Found %G Found 20161201004853 Found 20161201005125 Found 20161201005246
我曾尝试添加一个计数器,但我不知道如何分开命令,因为它的所有1行。 尽pipe大量的谷歌search如何,希望有人在这里知道。
像往常一样,如果有更好的办法做到这一点,我也是这样开放的。
这将删除除最后2个文件夹以外的所有文件夹(假设它们按字母顺序排列)
只要把这行id一个.cmd / .bat文件,并在父文件夹内执行
。 文件的数量可以通过传递给命令的参数(%1)来控制。 删除最后或第一个文件夹可以用'dir / b /o.n'来控制
setlocal EnableDelayedExpansion & set x=0 & for /f %%f in ( 'dir /b /on' ) do ( set /a x+=1 & if !x! lss 3 rd /s/q %%f )