【问题标题】:Opening files by relative path on Windows using C使用 C 在 Windows 上通过相对路径打开文件
【发布时间】:2017-09-05 07:48:44
【问题描述】:

我有这个文件/文件夹结构:

root
 out
   test1
    test1.exe
   test2
    test2.exe
   test3
    test3.exe
 bin
  run_test.exe

我想从run_test.exe 可执行文件中连续运行在out 文件夹的子文件夹中找到的所有测试可执行文件(test1、test2 等)。

在我的run_test.exe 代码中,我可以使用Windows API 中的GetModuleFileName() 函数获取可执行文件run_test.exe 的工作目录。我的问题是如何从 run_test 代码执行(或触发)测试可执行文件?我应该导航到每个可执行文件夹还是可以使用相对目录更改来导航?

【问题讨论】:

  • 您必须提供“找到”可执行文件的路径。因此,当前可执行文件的相对路径有效,绝对路径有效,或者导航到目录并仅提供可执行文件名称将有效。在所有情况下:只需编写一个测试程序并自己找出答案。
  • 但是怎么做呢?由于 GetModuleFileName(0, path, PATH_BUFFER_CAP - 1) 函数,我的路径变量中有 run_test.exe 的绝对路径。

标签: c windows file


【解决方案1】:

这取决于您运行每个测试可执行文件时当前工作目录的位置。我要做的是使用GetModuleFileName 获取可执行文件的位置,然后去掉exe 的名称和bin 以获取根目录作为绝对路径。

可以通过将根目录与(例如)"out\\test1\\test1.exe" 连接来创建每个可执行文件名称

如果需要将当前目录设置为测试目录,只需将"out\\test1"连接到根目录并使用SetCurrentDirectory设置当前工作目录即可。然后,您可以仅使用其名称运行可执行文件,例如test1.exe

【讨论】:

    【解决方案2】:

    您可以从 bin 目录返回。通常,可以在命令中使用的所有内容都可以使用。尝试使用dirent.h. 在那里您可以获取 out 文件夹的子文件夹并循环它们,使用简单的 sprintf 解析运行每个测试的命令。

    【讨论】:

    • 问题标记为 Windows。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2012-07-13
    • 2018-11-30
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多