使用C在Windows上用相对path打开文件

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

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

我想从run_test.exe可执行文件中连续运行在out文件夹的子文件夹中find的所有testing可执行文件(test1,test2等)。

在我的run_test.exe代码中,我可以通过使用Windows API中的GetModuleFileName()函数来获取可执行文件run_test.exe的工作目录。 我的问题是我怎样才能从run_test代码执行(或触发)testing可执行文件? 我应该导航到每个可执行文件夹,或者我可以使用相对目录更改吗?

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

每个可执行文件的名称都可以通过连接根(例如) "out\\test1\\test1.exe"

如果您需要将当前目录设置为test目录,只需将"out\\test1"连接到根目录并使用SetCurrentDirectory设置当前正在使用的directoy。 然后你可以运行可执行文件的名字,例如test1.exe

您可以从您的bin目录中导航回来。 一般来说,在命令中可以使用的所有东西都可以使 尝试使用dirent.h。 在那里你可以得到你的out文件夹的子文件夹并循环它们,使用一个简单的sprintf解析每个测试运行的命令。