无忧启动论坛

标题: 如何删除动态的子文件夹 [打印本页]

作者: cale    时间: 2017-5-8 08:56
标题: 如何删除动态的子文件夹
求教各位大神:

我们每周一次会往 D:\Boost\Priceline 下面放一个以当天日期命名的文件夹,这个文件夹下面会放一些csv 文件。 比如今天会放一个名字为20170508的文件夹,下面会有些csv. 下周会有另外一个文件夹比如20170517。每周循环日期不固定。

由于我们把csv文件用 move命令剪切到我们的服务器后,需要把 D:\Boost\Priceline  下面的文件夹删掉 (删除 文件夹20170508),但是要保留D:\Boost\Priceline。

请问如何用cmd 命令 删除 D:\Boost\Priceline 下面的动态的子文件夹呢?

因为如果用rd D:\Boost\Priceline /S /Q , 会把 Priceline文件夹也删掉,这是不允许的。而且不能删掉再建,因为Priceline文件夹我们已经给过权限给用户放文件,用md的话,权限会消失吧。。
作者: 窄口牛    时间: 2017-5-8 09:43
先删除整个文件夹,再建立一个不就OK了?
作者: Anson4    时间: 2017-5-8 10:17
可以试试:FOR /f %%i in ('DIR /b /ad D:\Boost\Priceline\20*') do (RD /s /q D:\Boost\Priceline\%%i)
作者: chiannet    时间: 2017-5-8 11:10
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "delims=" %%I IN ('dir /B /S "D:\Boost\Priceline\*.csv"') DO (
move "%%I" 目的文件夹
set p=%%~DPI
if not exist "!p!mayrddir.cmd" (echo RD "!p!" /Q /S >>"!p!mayrddir.cmd")
)


FOR /F "delims=" %%I IN ('dir /B /S "D:\Boost\Priceline\mayrddir.cmd"') DO (
call "%%I"
)
pause

作者: cale    时间: 2017-5-8 11:15
谢谢各位的解答。
我用的是如下命令,可以实现。 (虽然不理解这个命令)

for /f "tokens=*" %a in ('dir /b /ad /s D:\BOOST\Priceline^|sort /r') do rd "%a" /q 2>nul
作者: freesoft00    时间: 2017-5-8 11:56
cale 发表于 2017-5-8 11:15
谢谢各位的解答。
我用的是如下命令,可以实现。 (虽然不理解这个命令)

^|sort /r
这个没有必要加
作者: 窄口牛    时间: 2017-5-8 15:57
应该可以
作者: junyee    时间: 2017-5-8 19:07
frg521 发表于 2017-5-8 14:58
如果只要保留空白,进入目录,删除就可以了,不用绕弯路
cd/d f:\work && rd/s/q .
如果有用请贴到主楼分 ...

rd /s /q f:\work\.
为何不一句搞定?
作者: nttwqz    时间: 2017-5-8 19:55
junyee 发表于 2017-5-8 19:07
rd /s /q f:\work\.
为何不一句搞定?

这两者的区别大了去了。

切换到该目录,然后删除,因当前目录正在使用,故会保留该目录,仅删除在目录下的文件夹
他这是巧妙利用了当前目录正在使用无法删除的原理,我原来也用过一次来着。

作者: 窄口牛    时间: 2017-5-8 20:20
是的,高手看门道。
作者: junyee    时间: 2017-6-1 19:52
nttwqz 发表于 2017-5-8 19:55
这两者的区别大了去了。

切换到该目录,然后删除,因当前目录正在使用,故会保留该目录,仅删除在目录 ...
  1. rd /s /q f:\work\.
复制代码

同样能保留当前目录.
作者: kingshui    时间: 2017-8-16 17:00
无聊ing,回老帖。。。
  1. cd /d D:\Boost\Priceline & rd /s/q D:\Boost\Priceline
复制代码






欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3