在C++中使用 Dos 命令时使用 GetLastError
Using GetLastError when using Dos Commands in C++
所以我有一些代码使用Dos命令来尝试重命名文件夹。所以
system("rename C:\Users\me\SecondDir NewDir);
因此,这试图将SecondDir重命名为NewDir。该位置已经有一个名为 NewDir 的文件夹,因此它应该会失败。确实如此。然后我使用 GetLastError 返回错误代码,以确保问题是我期望的。但它只会返回ERROR_NO_MORE_FILES。这不是我应该得到的错误,这是ERROR_ALREADY_EXISTS。我假设这与使用系统命令有关?
编辑:我刚刚检查过,当命令成功时,我什至会返回ERROR_NO_MORE_FILES。
GetLastError 不会返回有意义的值,除非在记录这样做的情况下。这不是其中之一 - 您获得的值无关紧要,并且是为其他人准备的。
要从 C 重命名文件,您应该使用 C 运行时rename
函数,而不是使用系统调用重命名实用程序。
GetLastError
仅在调用 Win32 函数后立即有意义,该函数被记录为使用 SetLastError
设置线程上次错误。C 等价物是 errno
,这适用于 C 函数。
rename
函数在失败时返回 -1 并设置 errno
。
例如: http://msdn.microsoft.com/en-us/library/zw5t957f(v=VS.80).aspx
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何使用ESP8266向谷歌主页发送命令
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- Gstreamer 管道从命令 lne 到 c 代码
- 自动"yes"到 Popen SSH 命令
- 在C++中使用 Dos 命令时使用 GetLastError