如果 cmd.exe 无法成功移动文件,是否收到通知?



>我运行cmd.exe以移动具有管理员权限的文件:

ThisParams := '/C move ' + '"' + ThisSourceFile + '"' + ' ' + '"' + ATargetFile + '"';
Winapi.ShellAPI.ShellExecute(0, 'runas', 'cmd.exe', PChar(ThisParams), '', Winapi.Windows.SW_HIDE);

遗憾的是,无论移动操作是否成功,ShellExecute总是会返回成功(例如,如果目标文件存在且它是只读的,或者目标磁盘是写保护的,则移动操作将失败(。

那么,如果上述情况下的移动操作失败,我该如何获得通知?

也许您可以使用管道和加载生成的文件 例如,移动 A.txt B .TXT>结果.txt

procedure TForm1.Button1Click(Sender: TObject);
var
stToDo: string;
sl1 : TSTringList ;
MyResult : boolean ;
begin
stToDo := '/C move "C:UsersawrDesktopD2a.txt" "C:UsersawrDesktopD2b.txt" >C:UsersawrDesktopD2Result.txt';
ShellExecute(Application.Handle, 'runas', 'cmd.exe' ,PChar(stToDo),'',  SW_HIDE);
sl1 := TSTringList.create ;
sl1.LoadFromFile('C:UsersawrDesktopD2Result.txt');
MyResult := trim(sl1.text) <> '' ;
sl1.Free ; 

如果移动失败,"result.txt"为空

最新更新