Ich weiß jetzt leider nicht, ob CMD den letzten ErrorLevel des letzten Befehls als eigenen ExitCode rausgibt.
Code:
COPY /V %von% %nach%
IF ERRORLEVEL 1 EXIT %ERRORLEVEL%
COPY /V %von% %nach%
IF %ERRORLEVEL% GTR 0 EXIT %ERRORLEVEL%
Das Exit setzt auf jeden Fall (sollte zumindestens) den ExitCode der CMD.exe
und wenn man mag, dann kann man via /V dem Copy sagen, es solle die Datei nach dem Schreiben nochmal prüfen.
Aber am Ende läuft es doch auf Folgendes hinaus
Delphi-Quellcode:
Status := ShellExecute(
Handle,
nil, '
%ComSpec%', PChar('
/C "COPY mitPfad/unbenannt.pdf D:\Entwicklungen\BPSWAWI\Buero4\Rechnungen\RE-14553-vom-02-07-2014.pdf"'),
nil, SW_SHOW);
Status := ShellExecute(
Handle,
nil, '
%ComSpec%', PChar('
/C "COPY unbenannt.pdf D:\Entwicklungen\BPSWAWI\Buero4\Rechnungen\RE-14553-vom-02-07-2014.pdf"'), PChar(derPfad), SW_SHOW);
// k.A. ob jetzt %ComSpec% aufgelöst wird, oder halt einfach 'cmd.exe' nutzen, eventuell mit dem System32-Verzeichnis davor
und da frag ich mich, warum man dort nicht einfach RenameFile (SysUtils) oder CopyFile (Windws) verwenden sollte, oder besser noch eine der neuen Implementationen aus der IOUtils.
http://docwiki.embarcadero.com/CodeE...s_%28Delphi%29