我知道如何将 bat 转换为 exe这里,但我遇到一个问题,脚本本身有相对路径,没有办法将其改为绝对路径,并且 exe 中的脚本在其他地方启动。我该怎么办?
答案1
要引用正在执行批处理的当前路径,可以使用 %~dp0
举个例子:
回显 %~dp0
设置 CurrentPath=%~dp0
- 无需使用双百分比 (%%)
答案2
我也认为 %~dp0 技巧会起作用,但由于脚本在临时文件夹中运行(根据这个答案https://superuser.com/a/868341/618817)它根本不起作用,它只是引用一个空的临时文件夹。
到目前为止,我发现的唯一解决方法是,如果您尝试启动的是特定程序,则在 iexpress 包装器中包含您所引用的整个目录的副本。这确实会减慢一切速度,因为每次执行 .exe 脚本都意味着必须在脚本运行之前解压缩并复制该目录。但如果您尝试通过将 exe 放在正确的根文件夹中并执行它来动态运行脚本,并打算使用那里的目录,那么这远非理想选择……
我唯一的另一个想法是设计脚本以某种方式考虑启动参数,但对于 .bat 脚本来说,即使按照我的标准,这也开始变得非常复杂。