中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 14:08
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 用记事本打开批处理
可打印版本  6,908 / 16
第16楼 everest79 发表于 2007-03-19 00:00
金牌会员 发帖 1,127 积分 2,564
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""这样双引号的情形会让脚本中断并退出,所以版主采用了不管有没有引号,先使用~来删除,再人工添加

例如以下代码,双击执行会中断,但手工调用是一直可循环执行的
第17楼 xswdong 发表于 2007-03-19 11:12
中级用户 发帖 129 积分 216
%~0 只是 %0 的扩展,其含义是删除引号。
无奈何
版主 的解释到位
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023