中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]帮助分析一条语句? 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  [求助]帮助分析一条语句?

del c:\"%~nx1" /f/s/q/a

我的问题是%~nx1的理解?
nx是否是代表文件名的全称:文件基本名+扩展名
1是否是代表第一个参数

del c:\"%~nx1" /f/s/q/a是一个bat的内容,那么拖动一个文件到这个bat文件的图表下,就表示它是第一个参数,立刻被删除.
那么,增加一行:
del c:\"%~nx2" /f/s/q/a
就可以删除2个文件了,但我想多删除几个,我用
for /l %%i  in (1,1,9) do  del c:\"%%~nxi" /f/s/q/a

拖动多个文件,为什么不能删除?

2008-3-25 09:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 2 楼』:  

那样是针对%%i而已没有针对%1-%9

这样试看看没测试
for %%i in (%*) do echo del c:\%%~nxi ^/f ^/s ^/q ^/a

测正常的话就将echo和^去掉

[ Last edited by sylovanas on 2008-3-25 at 10:42 AM ]

2008-3-25 10:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
regvip2008
初级用户





积分 187
发帖 87
注册 2007-10-23
状态 离线
『第 3 楼』:  

呵呵,楼上的方法确实可行!

2008-3-25 11:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by sylovanas at 2008-3-25 10:40:
那样是针对%%i而已没有针对%1-%9

这样试看看没测试
for %%i in (%*) do echo del c:\%%~nxi ^/f ^/s ^/q ^/a

测正常的话就将echo和^去掉

[ Last edited by sylovanas on 2008-3-25 at 10:42 AM ]

谢谢,测试后不行!
嘿嘿,一个小疏忽   c:\%%~nxi 两端应该加双引号,避免出现空格路径,就解决了.

2008-3-25 11:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fuuma
初级用户





积分 32
发帖 14
注册 2007-8-28
状态 离线
『第 5 楼』:  

“我的问题是%~nx1的理解?
nx是否是代表文件名的全称:文件基本名+扩展名
1是否是代表第一个参数”

为什么我只在BAT里输入del "%~nx1" /f/s/q/a
就把同目录的文件都删了,而不是只删1个

2008-3-25 12:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  



  Quote:
“我的问题是%~nx1的理解?
nx是否是代表文件名的全称:文件基本名+扩展名
1是否是代表第一个参数”

你的理解是正确的

  Quote:
为什么我只在BAT里输入del "%~nx1" /f/s/q/a
就把同目录的文件都删了,而不是只删1个

试试del "%~dp0\%~nx1"

2008-3-25 13:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by fuuma at 2008-3-25 12:18 PM:
为什么我只在BAT里输入del "%~nx1" /f/s/q/a
就把同目录的文件都删了,而不是只删1个

直接运行BAT时,由于%1为空,%~nx1也为空,实际是 del ""  /f/s/q/a。
del "" /f/s/q/a等同 del * /f/s/q/a,就把同目录的文件(含子目录文件)都删了。
del "%~dp0\%~nx1" 也一样的。
BAT里输入 del "" ,直接运行BAT后会看到删除所有的提示。

2008-3-25 14:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fuuma
初级用户





积分 32
发帖 14
注册 2007-8-28
状态 离线
『第 8 楼』:  

谢谢,具体参数说明已经在C:\WINDOWS\Help\ntcmds.chm的
“使用批处理参数”中看到

2008-3-25 15:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: