delphi - Delphi中如何获取调用批处理文件的路径?

标签 delphi batch-file path

delphi中有没有办法确定批处理文件在哪个文件夹中,称为.exe?

例如有 2 个文件夹和一个批处理文件:

c:\application\program.exe
c:\files\data.dat
c:\batch.bat

批处理文件的代码是:

application\program.exe -open "files\data.dat"

然后在 Delphi 中我只得到“files\data.dat”作为 commandArgs[0]。有没有办法确定批处理文件从哪里调用我,以便我可以构建完整路径?

我知道我可以在批处理文件中写入:

application\program.exe -open "%~dp0files\data.dat"

在这种情况下,批处理文件解析路径并将完整路径传递给delphi,但这不是问题。

最佳答案

Is there a way in delphi to determine in which folder the batch file is which called the .exe?

这要看情况。如果您知道批处理文件位于包含可执行文件的目录的父目录中,那么您可以执行以下操作:

ExeDir := ExtractFileDir(ParamStr(0));
ParentDir := ExtractFileDir(ExeDir);

另一方面,如果您对批处理文件相对于可执行文件的位置没有特殊了解,则没有简单的方法可以确定它的位置。您不能指望从工作目录中计算出它,因为通常情况下,该目录可能是包含批处理文件的目录之外的目录。

因此,如果您不控制批处理文件,那么您就不能指望轻松可靠地找到它。更重要的是,我不确定你如何确定是否存在批处理文件。该程序可能可以通过其他某种机制启动。

关于delphi - Delphi中如何获取调用批处理文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16593834/

相关文章:

delphi - TClientDataset - 是否可以按 unicode 列名称进行过滤?

Delphi 7访问Windows X509证书存储

loops - 暂停批处理文件直到可以访问主机(使用 ping)?

java - 在路径上移动对象

python - 分解相对路径

excel - 防止 Excel 将 UDF 路径保存到公式单元格

windows - 使用 Dejan TComport Delphi 组件从串口读取二进制数据

Delphi CEF 检查站点是否无法访问

windows - Jenkins 作业被标记为失败,即使 bat 文件执行没有错误

c# - 使用批处理文件/命令行将参数传递给可执行文件