VC 强制删除 in use 文件

C++/CLI,.NET 2.0 // DeleteAfterRebootNET.cpp : main project file. #include "stdafx.h" #include "windows.h" #define DEBUG using 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;i Length;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;j Length;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;i Length;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;j Length;j++) { buff = new wchar_t[files[j]->Length+1]; for(int j=0;j Length;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;j Length;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; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值