所以我有一些使用Dos命令尝试重命名文件夹的代码。所以
system("rename C:\\Users\\me\\SecondDir NewDir);
因此,这会尝试将SecondDir重命名为NewDir。该位置已有一个名为NewDir的文件夹,因此它应该失败。确实如此。然后我使用GetLastError来获取返回的错误代码,以确保问题是我所期望的。但它只返回ERROR_NO_MORE_FILES。这不是我应该得到的错误,这是ERROR_ALREADY_EXISTS。我假设这与使用系统命令有关?
编辑:我刚刚检查过,当命令成功时我甚至会返回ERROR_NO_MORE_FILES。
答案 0 :(得分:3)
GetLastError不会返回有意义的值,除非在文档记录的情况下这样做。这不是其中之一 - 您获得的价值与其他人无关。
要从C重命名文件,您应该使用C运行时rename
函数,而不是使用system来调用重命名实用程序。
GetLastError
仅在调用Win32函数后立即生效,该函数记录为使用SetLastError
设置线程上一个错误。 C等价物是errno
,适用于C函数。
rename
函数在失败时返回-1并设置errno
。
例如:http://msdn.microsoft.com/en-us/library/zw5t957f(v=VS.80).aspx