|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
16 楼』:
你试试md a.b这个命令,就知道x不是多余的了,这也是程序严密性的体现。没有跟你争论的意思,只是提醒你要注意严密性,搞技术的一定要注意这一点。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2004-11-10 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
17 楼』:
我试过了,对带点的目录名,没有问题,我试了A.B.F这样的目录,都没问题,说明这个x确是管文件的扩展名的,而不是带点的目录名.因为我们的批处理的/d已经确定它是目录了..这个X就不起作用了
|
|
2004-11-10 00:00 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
18 楼』:
在我的试验中,如果不带x就不行的,假如C:盘中a目录,如果不带x,就会将D:盘的a.1 a.2等目录删除。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2004-11-10 00:00 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
19 楼』:
@echo off
:: testfor.bat 测试for命令及命令扩展
:: 功能:删除2目录下所有与1目录中重名的子目录
rd /s /q 1
rd /s /q 2
md 1\a
md 1\a.1
md 1\b
md 1\c
md 2\a
md 2\a.1
md 2\a.2
md 2\b
md 2\c
md 2\d
md 2\e
echo ================================================================
echo 目录 1 的内容:
echo ================================================================
dir /b 1
echo ================================================================
echo 目录 2 的内容:
echo ================================================================
dir /b 2
echo ================================================================
echo 运行第一个for命令之后(if %%~ni==%%~nj),目录2的内容变为:
for /d /r 1 %%i in (*) do for /d /r 2 %%j in (*) do if %%~ni==%%~nj rd /s /q %%j
echo ================================================================
dir /b 2
echo ================================================================
echo 注意:a.2目录被错误的删除了。
pause
echo.
echo ================================================================
echo 准备运行第二个for命令...
echo ================================================================
rd /s /q 1
rd /s /q 2
md 1\a
md 1\a.1
md 1\b
md 1\c
md 2\a
md 2\a.1
md 2\a.2
md 2\b
md 2\c
md 2\d
md 2\e
echo 目录 1 的内容:
echo ================================================================
dir /b 1
echo ================================================================
echo 目录 2 的内容:
echo ================================================================
dir /b 2
echo ================================================================
echo 运行第二个for命令之后(if %%~nxi==%%~nxj),目录2的内容变为:
for /d /r 1 %%i in (*) do for /d /r 2 %%j in (*) do if %%~nxi==%%~nxj rd /s /q %%j
echo ================================================================
dir /b 2
echo ================================================================
echo 看,a.2目录没有被删除。
echo.
echo ================================================================
echo 测试结果:目录名同样是有扩展名的。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2004-11-10 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
20 楼』:
哦,我刚才没明白你的意思,又试了,确实如你所说,现在发现FOR命令 的解释(或者程序)本身有问题,它说是处理扩展名,其实是处理所有带点的(包括目录),我还发现,这个X解析带点的,只以最后一个点为界。有点的话,如果不加X,它就分析最后的点之前的全部,如果加X,就分析全部。所以,如果有多点,并且不加X,比如A.B.C,他也不会认为和A相同.总之,这是一个缺陷,完整的处理是:对目录一律包括点,处理目录应该当作一个整体,只有当分析文件时才分扩展.
|
|
2004-11-10 00:00 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
21 楼』:
无论是Windows还是Linux系统,文件和目录的命名规则都是一样的,处理方式也是相同的,所以这不是系统的缺陷,只是你的程序考虑的不够严密罢了。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2004-11-11 00:00 |
|
|
qzwqzw
银牌会员
天的白色影子
积分 2342
发帖 635
注册 2004-3-6
状态 离线
|
『第
22 楼』:
Oh, Hit!!! 为了回复这个问题当机三次,想当个高手咋就这么难呢?dos我懂得不多,只记得学过一句,似乎跟这有些关系: for %%f in (d:\program\*.*) do if exist c:\%%f del c:\%%f不过用在这里好像不太行哦,是我的脑袋太笨,还是楼主的问题有问题?我总觉得,为什么不直接用dir看一下在哪,然后用deltree或者rd /s删除呢?怕删错还可以逐步确认呀。为什么一定要用那么长的for命令,还有那复杂的批处理?难道楼主你会一遍又一遍的把软件装错地方?有简单的不用,用复杂的,是一种罪过哦。所以,我到现在一直是用"查找"找到它,然后选中delete,方便快捷,没有后遗症。
|
|
2004-11-11 00:00 |
|
|
tired_bird
中级用户
积分 307
发帖 58
注册 2004-10-21
状态 离线
|
『第
23 楼』:
看了这份贴,加深了for 语句的用法及功能的理解。同时从Climbing和GOTOmsdos身上学到很多东西,受益匪浅。不过好像Climbing关于“无论是Windows还是Linux系统,文件和目录的命名规则都是一样的,处理方式也是相同的”的说法我有点不同看法,linux下文件和目录的命名规则可以支持冒号:,而xp 下及cygwin中的bash中文件和目录的命名不支持冒号。
|
|
2004-11-11 00:00 |
|
|
insert
中级用户
积分 282
发帖 52
注册 2004-9-29
状态 离线
|
『第
24 楼』:
同意22楼的说法,又不是每次都会解错地方,干吗要弄得那么复杂啊!!又没实际作用。 [em04]
|
|
2004-11-11 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
25 楼』:
to qzwqzw你没看清我的要求,我要求之一是:就因为文件太多了,一个个的看,找,太麻烦啊! 所以用DIR是肯定不行的!for %%f in (d:\program\*.*) do if exist c:\%%f del c:\%%f你的以上方法可以精简成我的帖子中的答案。后面的要求再看后面的内容。。。
|
|
2004-11-11 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
26 楼』:
TO insert 当然不是每个DOS技术都是很常用的,但对于学习研究DOS者来说,这就是钻研的任务之一。但一旦你或你的朋友遇到类似情况,就会显示出DOS功底的力量了。。
|
|
2004-11-11 00:00 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
27 楼』:
Quote: | 以下是引用tired_bird在2004-11-11 21:00:11的发言:
看了这份贴,加深了for 语句的用法及功能的理解。同时从Climbing和GOTOmsdos身上学到很多东西,受益匪浅。
不过好像Climbing关于“无论是Windows还是Linux系统,文件和目录的命名规则都是一样的,处理方式也是相同的”的说法我有点不同看法,linux下文件和目录的命名规则可以支持冒号:,而xp 下及cygwin中的bash中文件和目录的命名不支持冒号。 |
|
我并不是说Windows 和 Linux的文件命名规则是一样的(Windows下当然会有很多限制),但在同一个系统下,文件和目录名的命名规则是一样的。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2004-11-12 00:00 |
|
|
bush
银牌会员
积分 2165
发帖 730
注册 2004-4-21
状态 离线
|
『第
28 楼』:
樓主說的:D:\PROGRAM>for %1 in (*) do del c:\%1 /s 不好。你必须保证你的压缩文件中的一级目录在C盘也是唯一的。壓縮文件中的一級目錄在c盤中必須唯一,且沒有其他同名文件。還是先定位好。
|
|
2004-11-12 00:00 |
|
|
bush
银牌会员
积分 2165
发帖 730
注册 2004-4-21
状态 离线
|
『第
29 楼』:
其實,dir/d 按時閒排序,再刪除解壓時節以後的文件即可,雖然多一個步驟但是可靠一些.
|
|
2004-11-12 00:00 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
30 楼』:
to bush
没错,必须确定C盘中其他地方没有同名文件,跟目录没有关系,这句只解决文件呀
我这些考题其实只是从理论上实现达到一种意图,如果真要操作的话,肯定要再加控制其他条件的语句的
[此贴子已经被作者于2004-11-12 17:43:01编辑过]
|
|
2004-11-12 00:00 |
|