标题: 【新手helloworld系列之②】rd命令练习 [打印本页]
作者: Hello123World 时间: 2011-8-21 14:16 标题: 【新手helloworld系列之②】rd命令练习
本帖最后由 Hello123World 于 2011-8-21 17:35 编辑
有毒药就有解药,有解药就有毒药,没有毒药就没有解药,没有解药就没有毒药。
看着是不是有点晕?
嘿嘿,其实我真正要说的很简单:如果md是毒药那么rd就是解药,如果md是解药那么rd就是毒药,如果md不是毒药那么rd就不是解药,如果md不是解药那么rd就不是毒药。
(某读者:晕,更晕了……)
rd,也做rmdir,全英文remove directory,remove=移除,directory=目录
rd教程:http://bbs.bathome.net/viewthread.php?tid=3340&highlight=rd
教程的补充: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
呵呵~ 我再试试看吧~ 新手忽视~
如果是自己事先创建,基本上rd /q /s通杀
问题1:复制代码
问题2:- rd /q /s "C:\hello world"
复制代码
问题3:复制代码
问题4:- for /d %%i in (C:\*) do rd "%%i"
复制代码
作者: zaixinxiangnian 时间: 2011-8-21 20:06
本帖最后由 zaixinxiangnian 于 2011-8-21 20:20 编辑
- md c:\1;c:\2;c:\3
- rd /s /q c:\1 c:\2 c:\3
复制代码
- md c:\"hello world"
- rd /s /q c:\"hello world"
复制代码
- md c:\"hello world"
- md c:\"hello world"\1 c:\"hello world"\2
- rd /s /q c:\"hello world"
复制代码
- md c:\1;c:\2;c:\3
- for /f "delims==" %%i in ('dir /b /s') do if %%~zi equ 0 (rd %%i)
复制代码
新手,望高手指点,做本题时遇到2处问题
1.想通过MD 1 2 3 建后,然后复制1到3来达到删除非空文件的目的,但怎么也不能复制文件夹本身?- [,@echo off
- [code]md 1 2 3
- pause
- xcopy c:\1 c:\3 /s(不能把文件夹1复制到文件夹3 )
- pause
- rd /q /s 1 2 3
复制代码
2 IF中执行不成功也运行后面的不知道为什么?
错误代码1- md c:\1;c:\2;c:\3
- for /f "delims==" %%i in ('dir /b') do if %%~zi equ 0 (rd /s /q %%i)
复制代码
错误代码2- (for /f "delims==" %%i in ('dir /b') do set val=%%~zi&setlocal enabledelayedexpansion&if "!val!" equ "0" (rd /s/q %%i))
- pause
复制代码
作者: vsbat 时间: 2011-8-21 22:51
我想问问
for /d %%i in (C:\*) do rd "%%i"
你的这个测试成功的嘛????
我看到的是列出所有文件,没目录什么事儿
遍历指定目录下所有子目录中文件
作者: Hello123World 时间: 2011-8-22 13:26
回复 3# zaixinxiangnian
1.这是xcopy的特性,不复制第一层根目录,所以我一般要完全复制一个文件夹c:\hello到d,我会这么写- md d:\hello
- xcopy /e /y c:\hello d:\hello
复制代码
2.再测试一次看看,将s q 参数去掉(安全),删除空目录用不着他们。
作者: Hello123World 时间: 2011-8-22 13:27
回复 4# vsbat
他加了/d参数的……
作者: zaixinxiangnian 时间: 2011-8-22 15:22
回复 5# Hello123World
Hello123World 我那个IF的问题是怎么会事啊,,,,会什么不等于0 也执行后面的啊。。。。搞的我一不小心把我桌面文件全删除了
作者: Hello123World 时间: 2011-8-22 17:44
- @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
复制代码
因该不会啊,这两句都是显示大小等于0的文件夹、文件,不等于0的并没有显示,那么怎么会删除?
作者: Hello123World 时间: 2011-8-22 17:46
如果出现了误删,也不是这两句代码造成的。
作者: keiamy 时间: 2012-3-19 10:05
本帖最后由 keiamy 于 2012-3-24 09:29 编辑
水平有限,想了很久,实在是找不到好方法,代码效率不高,希望版主或高手可以指点一下哦"- @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
复制代码
作者: 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
回复 12# yaboo
请以BAT形式运行!~
作者: 风之舞者 时间: 2013-8-26 17:33
有点晕了。又是delims ,又是for ,小白白dos有点 基础,但是还是脸吓都白了。这两个命令 ,是是是怎么个用法,等我查我查我再查,
作者: lifei259 时间: 2013-11-30 14:03
回复 8# Hello123World
在for中%~ZI所有文件夹的大小都为0,文件夹没有大小,不信你们试试。没有用RD/S /Q 还好用了就会把文件夹全都删了
作者: lifei259 时间: 2013-11-30 14:15
回复 3# zaixinxiangnian
问题一
Xcopy /s命令是目录各子目录,不包括空目录。
问题二
FOr中%~ZI,只是查看文件大小。但是不能查文件夹大小
想看要看文件夹大小,用FOR 命令提取‘dir /s' 中的总节数。
作者: impk 时间: 2019-9-1 11:55
- @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
复制代码
第四条命令,大批量删除空文件夹,对系统有没有破坏性?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |