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/