中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样用聪明的小DOS命令解决烦人问题?!(DOS高手小考题)
« [1] [2] [3] »
作者:
标题: 怎样用聪明的小DOS命令解决烦人问题?!(DOS高手小考题) 上一主题 | 下一主题
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 16 楼』:  

你试试md a.b这个命令,就知道x不是多余的了,这也是程序严密性的体现。没有跟你争论的意思,只是提醒你要注意严密性,搞技术的一定要注意这一点。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-11-10 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: