![]() |
ShellExecute führt den Befehl nicht aus
Guten Tag Delphianer,
ich möchte mit folgendem Code eine Datei kopieren:
Delphi-Quellcode:
Inhalt der BAT-Datei:
ShellExecute(Handle, 'open', PChar(FPfadPDFAblage + '\pdfrechnung-kopie.bat'),
nil, nil, SW_SHOW); Copy unbenannt.pdf D:\Entwicklungen\BPSWAWI\Buero4\Rechnungen\RE-14553-vom-02-07-2014.pdf Wenn ich mit einem Doppelklick auf die Bat-Datei klicke, wird die Datei kopiert. Lasse ich obigen Code ausführen, wird die Datei nicht kopiert. Woran mag dies wohl liegen?? Vielen Dank für Hilfestellungen im voraus. Mit Gruß HPB |
AW: ShellExecute führt den Befehl nicht aus
Wo?
PS: Der Explorer ist schlauer. Er verwendet letztendlich auch auch nur sowas, wie das ShellExecute, nur ist der so intelligent und übergibt das aktuelle Verzeichnis als Arbeitsverzeichnis. :stupid: |
AW: ShellExecute führt den Befehl nicht aus
Steht in FPfadPDFAblage auch der absolute Pfad?
|
AW: ShellExecute führt den Befehl nicht aus
Zitat:
Nein, die PDF-Datei kann nicht sofort unter dem richtigen Namen gespeichert werden. Sie wird aus der pdfFactory erzeugt. Alles Weitere werde ich noch prüfen müssen. Mit Gruß HPB |
AW: ShellExecute führt den Befehl nicht aus
Zitat:
ja in der Variable steht auch der der absolute Pfad. Mit Gruß HPB |
AW: ShellExecute führt den Befehl nicht aus
Was gibt ShellExecute denn zurück?
|
AW: ShellExecute führt den Befehl nicht aus
Meiner Meinung nach fehlt in der Batchdatei einfach nur der Pfad wo die Datei unbenannt.pdf zu finden ist. Führt man die Batchdatei da aus wo sich diese unbenannt.pdf-Datei befindet, geht das natürlich, da man zuvor in das Verzeichnis wechselt. Der Verzeichniswechsel wird allerdings nicht im ShellExecute gemacht. Deswegen:
Copy [um PFAD ergänzen]unbenannt.pdf D:\Entwicklungen\BPSWAWI\Buero4\Rechnungen\RE-14553-vom-02-07-2014.pdf |
AW: ShellExecute führt den Befehl nicht aus
Ich weiß jetzt leider nicht, ob CMD den letzten ErrorLevel des letzten Befehls als eigenen ExitCode rausgibt.
Code:
Das Exit setzt auf jeden Fall (sollte zumindestens) den ExitCode der CMD.exe
COPY /V %von% %nach%
IF ERRORLEVEL 1 EXIT %ERRORLEVEL% COPY /V %von% %nach% IF %ERRORLEVEL% GTR 0 EXIT %ERRORLEVEL% 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:
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.
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 ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz