Windows从当前路径向上一个目录

时间:2016-02-25 07:50:23

标签: c++ windows winapi

我一直在寻找几个小时,但目前还无法找到解决方案。道歉它可能非常简单。

我的程序正在使用CreateDirectory创建一个新目录,然后设置它的路径以接收大量数据文件:

if (CreateDirectory(dateTime.c_str(), NULL) || ERROR_ALREADY_EXISTS == GetLastError())
{
    SetCurrentDirectory(dateTime.c_str());
}

一旦生成了所有数据文件,我想在不指定绝对路径的情况下向上移动一个目录。相当于cd..../的东西有谁知道最好的方法呢?

2 个答案:

答案 0 :(得分:2)

一种可能的方法是在更改为新目录之前获取当前目录(GetCurrentDirectory),一旦完成,然后更改所需目录;类似于推/弹。

在示例中,为了简单起见,我省略了错误检查和缓冲区大小要求。

TCHAR resetDir[1024] = {};
GetCurrentDirectory(1024, resetDir);
//... Do some work, change directories etc...
// Reset the directory
SetCurrentDirectory(resetDir);

旁注:启动进程时的当前目录不一定与进程映像所在的目录(exe路径)相同。

可以通过简单的

完成相对更改
SetCurrentDirectory(_T(".."));

虽然从当前目录中建立亲戚也是可行的(可能更可取);

SetCurrentDirectory((currentDir + _T("\\..")).c_str());

答案 1 :(得分:1)

在内部,cd命令以SetCurrentDirectory结束。因此,要获得与cd..cd ../等效的内容,您只需使用:

cr = ::SetCurrentDirectory("..");

cr如果成功则应为非零,如果失败则为0。在后一种情况下,使用GetLastError获取更多信息。