0

所以我有一些代码使用 Dos 命令来尝试重命名文件夹。所以

system("rename C:\\Users\\me\\SecondDir NewDir);

所以这试图将 SecondDir 重命名为 NewDir。该位置已经有一个名为 NewDir 的文件夹,因此它应该会失败。它确实如此。然后我使用 GetLastError 来获取返回的错误代码,以确保问题是我所期望的。但它只返回 ERROR_NO_MORE_FILES。这不是我应该得到的错误,即 ERROR_ALREADY_EXISTS。我假设这与使用系统命令有关?

编辑:我刚刚检查过,我什至在命令成功时返回 ERROR_NO_MORE_FILES 。

4

1 回答 1

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

于 2012-05-28T16:44:05.807 回答