批处理之家's Archiver

Hello123World 发表于 2011-8-21 14:16

【新手helloworld系列之②】rd命令练习

[i=s] 本帖最后由 Hello123World 于 2011-8-21 17:35 编辑 [/i]

有毒药就有解药,有解药就有毒药,没有毒药就没有解药,没有解药就没有毒药。
看着是不是有点晕?
嘿嘿,其实我真正要说的很简单:如果md是毒药那么rd就是解药,如果md是解药那么rd就是毒药,如果md不是毒药那么rd就不是解药,如果md不是解药那么rd就不是毒药。
(某读者:晕,更晕了……)

rd,也做rmdir,全英文remove directory,remove=移除,directory=目录

rd教程:[url]http://bbs.bathome.net/viewthread.php?tid=3340&highlight=rd[/url]

教程的补充:rd是remove directory的缩写,不是remake directory的缩写。(nj大大之所以把r理解为remake,我猜是在md的m基础上做出了自己的判断,但remake只有“重制做”的意思,并没有“删除、移除”的意思。)

rd练习要求:
1.需要自己创建目录供rd删除(如果运用md这将会是一件很轻松的事)
2.没有做特殊说明的情况,只能用rd且只能用一个rd完成练习。

rd练习目的:
1.熟练掌握光杆rd命令的特性
2.掌握s、q参数(思考:如果没有s,q有存在的意义吗?)

rd练习:
1.自己任意新建3个文件夹,重命名,用rd删除
2.删除c盘名为“hello world”的目录(先创建)
3.删除非空目录一个(目录中含有2个以上的文件或文件夹),需要自己创建
4.删除c盘下的所有空文件夹(如果在该文件夹中含有空的文件夹,也把这个文件夹看成是空的),此处可以用for

raymai97 发表于 2011-8-21 14:40

呵呵~ 我再试试看吧~ 新手忽视~

[color=White]如果是自己事先创建,基本上rd /q /s通杀

问题1:[code]rd /q /s abc def ghi[/code]问题2:[code]rd /q /s "C:\hello world"[/code]问题3:[code]rd /q /s bathome[/code]问题4:[code]for /d %%i in (C:\*) do rd "%%i"[/code][/color]

zaixinxiangnian 发表于 2011-8-21 20:06

[i=s] 本帖最后由 zaixinxiangnian 于 2011-8-21 20:20 编辑 [/i]

[code]md c:\1;c:\2;c:\3
rd /s /q c:\1 c:\2 c:\3[/code][code]md c:\"hello world"
rd /s /q c:\"hello world" [/code][code]md c:\"hello world"
md c:\"hello world"\1 c:\"hello world"\2
rd /s /q c:\"hello world" [/code][code]md c:\1;c:\2;c:\3
for /f "delims==" %%i in ('dir /b /s') do if %%~zi equ 0 (rd  %%i)[/code]新手,望高手指点,做本题时遇到2处问题
1.想通过MD 1 2 3 建后,然后复制1到3来达到删除非空文件的目的,但怎么也不能复制文件夹本身?[code][,@echo off
[code]md 1 2 3
pause
xcopy c:\1 c:\3 /s(不能把文件夹1复制到文件夹3 )
pause
rd /q /s 1 2 3 [/code]2 IF中执行不成功也运行后面的不知道为什么?
错误代码1[code]md c:\1;c:\2;c:\3
for /f "delims==" %%i in ('dir /b') do if %%~zi equ 0 (rd /s /q %%i)[/code]错误代码2[code](for /f "delims==" %%i in ('dir /b') do set val=%%~zi&setlocal enabledelayedexpansion&if "!val!" equ "0" (rd /s/q %%i))
pause[/code]

vsbat 发表于 2011-8-21 22:51

我想问问
[quote]
for /d %%i in (C:\*) do rd "%%i"
[/quote]
你的这个测试成功的嘛????
我看到的是列出所有文件,没目录什么事儿
遍历指定目录下所有子目录中文件

Hello123World 发表于 2011-8-22 13:26

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=89916&ptid=13765]3#[/url] [i]zaixinxiangnian[/i] [/b]


    1.这是xcopy的特性,不复制第一层根目录,所以我一般要完全复制一个文件夹c:\hello到d,我会这么写[code]md d:\hello
xcopy /e /y c:\hello d:\hello[/code]2.再测试一次看看,将s q 参数去掉(安全),删除空目录用不着他们。

Hello123World 发表于 2011-8-22 13:27

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=89940&ptid=13765]4#[/url] [i]vsbat[/i] [/b]


    他加了/d参数的……

zaixinxiangnian 发表于 2011-8-22 15:22

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=89966&ptid=13765]5#[/url] [i]Hello123World[/i] [/b]

Hello123World  我那个IF的问题是怎么会事啊,,,,会什么不等于0 也执行后面的啊。。。。搞的我一不小心把我桌面文件全删除了

Hello123World 发表于 2011-8-22 17:44

[code]@echo off
for /f "delims==" %%i in ('dir /b') do if %%~zi equ 0 (echo %%~fi)
pause
for /f "delims==" %%i in ('dir /b /s') do if %%~zi equ 0 (echo  %%~fi)

pause[/code]因该不会啊,这两句都是显示大小等于0的文件夹、文件,不等于0的并没有显示,那么怎么会删除?

Hello123World 发表于 2011-8-22 17:46

如果出现了误删,也不是这两句代码造成的。

keiamy 发表于 2012-3-19 10:05

[i=s] 本帖最后由 keiamy 于 2012-3-24 09:29 编辑 [/i]

水平有限,想了很久,实在是找不到好方法,代码效率不高,希望版主或高手可以指点一下哦"[code]
@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%i in ('dir /b /s /ad-h c:\') do (
set "str=%%i"&set n=0
call :lp
set "n=0!n!"&echo !n:~-2!.%%i
))>tmp.txt
for /f "tokens=1* delims=." %%i in ('sort /r tmp.txt') do (rd "%%j" 2>nul&&set /a x+=1)
echo 共删除了 %x% 个空资料夹
del tmp.txt
pause&exit /b
:lp
set "str=%str:*\=%"
if "%str%"=="%str1%" goto :eof
set "str1=%str%"
set /a n+=1
goto lp
[/code]

yaboo 发表于 2012-7-12 21:26

删除C盘下所有的空文件,从大家的回答中找了几条命令试试看,都没成。运行这条命令时,提醒

此时不应有 %%i。


for /f "delims==" %%i in ('dir /b') do if %%~zi equ 0 (echo %%~fi)

cjiabing 发表于 2012-7-19 14:43

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=113119&ptid=13765]12#[/url] [i]yaboo[/i] [/b]


    请以BAT形式运行!~

风之舞者 发表于 2013-8-26 17:33

有点晕了。又是delims ,又是for ,小白白dos有点 基础,但是还是脸吓都白了。这两个命令 ,是是是怎么个用法,等我查我查我再查,

lifei259 发表于 2013-11-30 14:03

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=90002&ptid=13765]8#[/url] [i]Hello123World[/i] [/b]
在for中%~ZI所有文件夹的大小都为0,文件夹没有大小,不信你们试试。没有用RD/S /Q 还好用了就会把文件夹全都删了

lifei259 发表于 2013-11-30 14:15

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=89916&ptid=13765]3#[/url] [i]zaixinxiangnian[/i] [/b]

问题一
    Xcopy /s命令是目录各子目录,不包括空目录。
问题二
FOr中%~ZI,只是查看文件大小。但是不能查文件夹大小
想看要看文件夹大小,用FOR 命令提取‘dir /s' 中的总节数。

impk 发表于 2019-9-1 11:55

[code]@echo off
::第一题
md 1 2 3 & ren 1 11 & ren 2 22 & ren 3 33
::第二题
md c:\"hello world" & rd c:\"hello world"
::第三题
md c:\c\1 & md c:\c\2 & rd /s/q c:\c
::第四题
for /d %%i in ( c:\* ) do rd %%i
pause[/code]第四条命令,大批量删除空文件夹,对系统有没有破坏性?

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.