VC 强制删除 in use 文件

来源:互联网 发布:mysql 半连接 编辑:程序博客网 时间:2024/05/17 05:51
C++/CLI,.NET 2.0// DeleteAfterRebootNET.cpp : main project file.#include "stdafx.h"#include "windows.h"#define DEBUGusing namespace System;int main(array ^args){LPWSTR buff;BOOL ret;LPTSTR s;if (args->Length < 2){ Console::WriteLine(L"darn F(ile)|D(irectory) filename1|directory1 filename2|directory2 filename3|directory3 ..."); return -1;}else{ if (args[0]->ToLower() == "f") { int successed = 0, failed = 0; for(int i=1;iLength;i++) { if (System::IO::File::Exists(args) == false) { Console::WriteLine("File {0} doesn't exist!",args); failed++; continue; } buff = new wchar_t[args->Length+1]; for(int j=0;jLength;j++) buff[j]=args[j]; ret = MoveFileEx(buff,NULL,MOVEFILE_DELAY_UNTIL_REBOOT); if ( ret == 0) { if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,GetLastError(),0,(LPTSTR)&s,0,NULL) != 0) { Console::WriteLine("Error:delete file {0} failed!",args); failed++; Console::WriteLine(gcnew String(s)); continue; } } else { Console::WriteLine("Successed delete file {0}!",args); successed++; } } Console::WriteLine("{0} file(s) processed,{1} successed, {2} failed.",args->Length-1,successed,failed);#ifdef DEBUG Console::ReadLine();#endif } else if (args[0]->ToLower() == "d") { int successed = 0, failed = 0; int dsuccessed = 0, dfailed = 0; for(int i=1;iLength;i++) { if (System::IO::Directory::Exists(args) == false) { Console::WriteLine("Directory {0} doesn't exist!",args); failed++; continue; } String^ currdir = Environment::CurrentDirectory; if (args->IndexOf(currdir) == -1) args = currdir + "//" + args; array ^files = System::IO::Directory::GetFiles(args); //未考虑嵌套情况 for(int j=0;jLength;j++) { buff = new wchar_t[files[j]->Length+1]; for(int j=0;jLength;j++) buff[j]=files[j]; ret = MoveFileEx(buff,NULL,MOVEFILE_DELAY_UNTIL_REBOOT); if ( ret == 0) { if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,GetLastError(),0,(LPTSTR)&s,0,NULL) != 0) { Console::WriteLine("error:delete file {0} failed!",args); failed++; Console::WriteLine(gcnew String(s)); continue; } } else { Console::WriteLine("successed delete file {0}!",args); successed++; } } Console::WriteLine("{0} file(s) processed,{1} successed, {2} failed.",files->Length,successed,failed); buff = new wchar_t[args->Length+1]; for(int j=0;jLength;j++); ret = MoveFileEx(buff,NULL,MOVEFILE_DELAY_UNTIL_REBOOT); if ( ret == 0) { if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,GetLastError(),0,(LPTSTR)&s,0,NULL) != 0) { Console::WriteLine("error:delete directory {0} failed!",args); dfailed++; Console::WriteLine(gcnew String(s)); continue; } } else { Console::WriteLine("successed delete directory {0}!",args); dsuccessed++; } } Console::WriteLine("{0} directory(s) processed,{1} successed,{2} failed.",args->Length-1,dsuccessed,dfailed);#ifdef DEBUG Console::ReadLine();#endif } else { Console::WriteLine("unkown flag:{0}",args[1]); return -2; }}return 0;}
原创粉丝点击