使用C在Windows上按相对路径打开文件

使用C在Windows上按相对路径打开文件,c,windows,file,C,Windows,File,我有以下文件/文件夹结构: root out test1 test1.exe test2 test2.exe test3 test3.exe bin run_test.exe 我想从run_test.exe可执行文件中连续运行out文件夹子文件夹中的所有测试可执行文件(test1、test2等) 在我的run_test.execode中,我可以使用Windows API中的GetModuleFileName()函数获取可执行文件run_test

我有以下文件/文件夹结构:

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


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

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

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

通过将根目录与(例如)
“out\\test1\\test1.exe”


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

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