在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题描述 假设我们要在批处理a.bat里调用执行批处理 // directory structure // c: // -a.bat // -program // -b.bat // -run.exe // a.bat call "%cd%\program\b.bat" // b.bat "%cd%\run.exe" 那么现在能不能成功执行 问题分析
我们来看看下面的例子: // directory structure // c: // -c.bat // -program // -d.bat // c.bat call "%cd%\program\d.bat" // d.bat @echo off echo cd = %cd% echo dp0 = %~dp0 直接运行 cd = C:\program dp0 = C:\program\ 直接运行 cd = C:\ dp0 = C:\program\ 从上面的结果可以看出:
问题解决 让我们再来看看问题描述中提及的问题——能不能成功执行 答案是:不能。“ 有两种方案: // plan A // change the current working directory // a.bat cd "%~dp0" call "%cd%\program\b.bat" // b.bat cd "%~dp0" "%cd%\run.exe" // plan B // using %~dp0 directly // a.bat call "%~dp0program\b.bat" // b.bat "%~dp0run.exe" 问题延伸 上面的解决方案中plan A通过更改当前目录来解决该问题,可以这里面也存在另外一个问题,让我们看下面的例子: // directory structure // c: // -program // -f.bat // d: // -e.bat // plan A // change the current working directory // e.bat cd "%~dp0" call "c:\program\f.bat" // f.bat cd "%~dp0" "%cd%\run.exe" 现在 cd /d "%~dp0" 这个地方容易疏忽,切记不要犯错。 问题总结 我们来重申下
从目前我们的使用情况来看,尽量使用 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。 |
请发表评论