【问题标题】:Is it possible to get the path of a bat file that invokes an application?是否可以获取调用应用程序的 bat 文件的路径?
【发布时间】:2021-07-25 11:37:43
【问题描述】:

例如我的控制台应用程序在这里:

C:\Users\User\Documents\Embarcadero\Studio\Projects\Console App Test\Win32\Debug\ConsoleAppTest.exe

我在 `C:\Temp\exec.bat' 有一个 bat 文件,它将调用控制台应用程序:

bat文件内容:

"C:\Users\User\Documents\Embarcadero\Studio\Projects\Console App Test\Win32\Debug\ConsoleAppTest.exe"

使用 Delphi,在控制台应用程序中,我是否可以“知道”控制台应用程序是由 C:\Temp\exec.bat 启动的?更具体地说,从路径C:\Temp?

【问题讨论】:

  • 没有。为什么你还需要它?
  • 我想将错误日志保存在C:\Temp文件夹中,而不是控制台应用文件夹中...
  • 从bat文件启动app时C:\Temp不是当前目录吗?
  • 顺便说一句,在应用启动时将日志保存在当前目录中确实是个坏主意。
  • 表现良好的应用程序应将日志保存在用户配置文件中,例如 AppData\Local 文件夹(每个用户专用)或 ProgramData 文件夹(所有用户均可访问)。在这些目录中,您应该使用您的公司名称创建一个子目录,然后创建一个带有应用程序名称的子目录,然后保存您的日志。不要不要对这些路径进行硬编码,而是通过查询 shell 来获取它。使用SHGetFolderPath

标签: delphi console-application


【解决方案1】:

简单的回答:不,您无法获取调用应用程序的 bat 的路径。

根据 cmets,您在实现目标方面走错了路(反正没有明确定义)。

【讨论】:

  • 为什么不 GetCurrentDir?这对我来说似乎很有效。
  • 因为 GetCurrentDir 返回...当前目录 NOT 始终是调用应用程序的 bat 的路径。这已在您的问题下的 cmets 中进行了讨论。如果您有不明白的地方,您必须提出一个新问题。 StackOverflow不允许聊天讨论:这是一个问答网站。
  • @RaelB 因为可以在启动进程/应用时设置初始工作目录。
猜你喜欢
  • 2018-05-23
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多