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"