您好,我正在尝试使用以下代码删除文件:
CreateProcessA(NULL, (LPSTR)"del /f C:\\Users\\samee\\AppData\\Local\\Temp\\tempFile.txt", 0, 0, true, CREATE_NO_WINDOW, 0, 0, &si, &pi);
但是这不起作用。这里做错了什么?
del
不是可以直接运行的可执行文件。 它是 cmd.exe
shell 的内置命令。 因此,您需要运行 cmd.exe
,使用其 /C
或 /K
参数来执行 shell 命令,例如:
char cmdLine[] = "cmd.exe /C del /f C:\\Users\\samee\\AppData\\Local\\Temp\\tempFile.txt";
CreateProcessA(NULL, cmdLine, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
DeleteFileA()
函数,您应该使用它,例如:
DeleteFileA("C:\\Users\\samee\\AppData\\Local\\Temp\\tempFile.txt");
请注意,
/f
的del
参数允许删除只读文件。如果 DeleteFileA()
由于文件是只读而失败,则只需删除只读标志即可,例如:
char fileName[] = "C:\\Users\\samee\\AppData\\Local\\Temp\\tempFile.txt";
DWORD attr = GetFileAttributesA(fileName);
if ((attr != INVALID_FILE_ATTRIBUTES) && (attr & FILE_ATTRIBUTE_READONLY))
SetFileAttributesA(fileName, attr & ~FILE_ATTRIBUTE_READONLY);
DeleteFileA(fileName);
我怎么看,你尝试使用命令“del”来删除文件。我更经常使用命令
system
:
#include <windows.h>
#include <iostream>
int main() {
std::cout << "use command \"del\"";
system("del /f C:\\Users\\samee\\AppData\\Local\\Temp\\tempFile.txt");
}
这里使用cmd窗口