中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 用记事本打开批处理 上一主题 | 下一主题
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by anqing at 2007-2-5 09:14 AM:
call start notepad "%~0"
请问版主,这句在p中,改成call start notepad %0的话,和call start notepad "%~0"有什么不同??

~是扩展功能,没有扩展项目时,只是去除引号
这样是为了提高程序的兼容性
因为脚本在不同的调用方式下%0参数是不同的(完整路径与名称以及有无引号)
为了避免路径或名称中的空格,我们需要给notepad的参数%0加上引号,而当系统默认引用时,这引号是自动就加上去的,但你若是已经定义了自身名称,那引用时会使用定义后的,例如命令行下执行test.cmd,这是%0的值就是test.cmd,不会有引号,而不是你双击执行时的"path\test.cmd",由于这种现像,系统默认的引号反而会在不同的运行方式下成了导致运行故障的环节""path\test.cmd""这样双引号的情形会让脚本中断并退出,所以版主采用了不管有没有引号,先使用~来删除,再人工添加

例如以下代码,双击执行会中断,但手工调用是一直可循环执行的
echo %0
echo %~0
pause
call "%0"


2007-3-19 00:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『第 17 楼』:  

%~0 只是 %0 的扩展,其含义是删除引号。
无奈何
版主 的解释到位

2007-3-19 11:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: