无忧启动论坛

标题: 如何用FOR命令对一个目录下的所有文件执行多个命令? [打印本页]

作者: 阿尔法孝直    时间: 2006-8-12 18:15
标题: 如何用FOR命令对一个目录下的所有文件执行多个命令?
比如我对一个目录下的每一个文件执行以下操作

1、显示文件名
2、删除该文件
3、对下一个文件执行第1、2步的操作

[ 本帖最后由 阿尔法孝直 于 2006-8-12 06:17 PM 编辑 ]
作者: namejm    时间: 2006-8-13 18:33
@echo off
for /r %%i in (*.*) do (echo %%~nxi && del %%~nxi)
pause
作者: 安情    时间: 2006-8-13 19:00
原帖由 namejm 于 2006-8-13 06:33 PM 发表
@echo off
for /r %%i in (*.*) do (echo %%~nxi && del %%~nxi)
pause



不太明白.能加以注解吗?
for /r  ?


%%i in    ?


%%~nxi &&      ?
作者: namejm    时间: 2006-8-13 22:54
在for语句中,for /r 是遍历目录的意思,在每个目录执行相同的动作;至于%%i in,这个是for语句的固定格式:for /开关 变量 in (设置) do (动作);在for语句中,%%~nxi意思是取文件的文件名和扩展名.更多信息,请在CMD下用for /?来查询.如果想要提高批处理水平,中国DOS联盟论坛是个好地方.
作者: 安情    时间: 2006-8-14 10:06
谢谢你,学习了.
中国DOS联盟论坛,它的网址是?
作者: 小军军    时间: 2006-8-14 10:21
http://www.cn-dos.net/forum/
作者: 阿尔法孝直    时间: 2006-8-14 13:15
若是在9X下呢?
作者: 小军军    时间: 2006-8-14 13:55
9X下把楼上那句for拆为2句,去掉NT的增强参数也可以
作者: 阿尔法孝直    时间: 2006-8-14 14:20
但这样的话就会列出所有文件完再删掉所有文件呀。
我要求显示一个文件,删一个文件;再显示下一个文件,再删文件……这样重复,直到最后一个文件显示并删除。

[ 本帖最后由 阿尔法孝直 于 2006-8-14 02:35 PM 编辑 ]
作者: 阿尔法孝直    时间: 2006-8-14 17:08
谁知道??
作者: namejm    时间: 2006-8-14 17:13
re 阿尔法孝直:

  请把你的系统版本和要实现的功能说详细点,像这样挤牙膏式的提问很难完美地解决问题的。
作者: 安情    时间: 2006-8-14 18:17
@echo off
for /r %%i in (*.*) do (echo %%~nxi && del %%~nxi)
pause
我在xp下做了试验,实现不了.
我去掉一个%就行了.一个%和两个%,有什么区别呀?
for /r %i in (*.*) do echo %~nxi
我这样输入的,结果显示所有的文件,我都没有看清是什么?
我也是希望显示一个,停一上.然后询问是否删除.然后再继续显示,如果是这样,应该怎么写批处理?
作者: namejm    时间: 2006-8-14 18:28
Re 安情:

  这段代码要保存成批处理文件来执行才会有效的,如果在命令行里执行for语句,变量的百分号只能保留一个,而批处理中要两个。

  如果在删除文件的时候需要手工确认,在del后面加参数 /p 就可以了。以下代码请保存在批处理文件中之后再执行批处理文件,而不应该在命令行里运行。
@echo off
for /r %%i in (*.*) do (echo %%~nxi && del /p %%~nxi)
pause
作者: 安情    时间: 2006-8-14 18:59
谢谢楼上的朋友!
作者: 阿尔法孝直    时间: 2006-8-15 11:22
要求在9X下。
作者: namejm    时间: 2006-8-17 13:18
98的系统太古老了,我已经N年没用它了。以前用它的时候,还不会批处理;现在会批处理了,却没机会用到它了:(




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