Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   *.bat Datei wird nicht richtig ausgeführt (https://www.delphipraxis.net/147570-%2A-bat-datei-wird-nicht-richtig-ausgefuehrt.html)

Ykcim 11. Feb 2010 16:13


*.bat Datei wird nicht richtig ausgeführt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

ich habe ein Programm, welches eine *.bat Datei ausführen soll. Für den Aufruf verwende ich folgenden Befehl:
Delphi-Quellcode:
ShellExecute(self.handle, 'OPEN','F:\Datenupdate\DatenbankUpdate 11.02.2010\RUNQRY_AEPH\AEPH_001\Test.bat', '', '', SW_Show);
Die Datei wird auch daraufhin kurz aufgerufen, aber sofort wieder geschlossen. Das wäre kein Problem, aber dummerweise macht sie auch nicht das, was sie soll - nämlich 2 Dateien von einem FTP-Server ziehen...

Wenn ich die Datei via Doppelklick öffne, funktioniert sie wunderbar.

Folgender Inhalt steht in der BAT-Datei

Zitat:

@echo off
echo "CSV-Datei abholen AEPH_001 Liefersituation 4 Wochen"
echo
rtopcb AEPH_001_CSV.dtf
echo
echo "Ende der Übertragung"
Kennt jemand ein solches Problem und gibt es dafür vielleicht auch eine Lösung?

Vielen Dank im Voraus

P.S. Ich habe mit einem irre schnelle Finger ein Screenshot gemacht, während es für einen Bruchteil zu sehen ist.

Ykcim

khh 11. Feb 2010 16:31

Re: *.bat Datei wird nicht richtig ausgeführt
 
hast es mal mit absoluten Pfaden im Batchfile versucht?

turboPASCAL 11. Feb 2010 16:33

Re: *.bat Datei wird nicht richtig ausgeführt
 
schon versucht ?

Delphi-Quellcode:
ShellExecute(self.handle, 'OPEN','Test.bat', nil, 'F:\Datenupdate\DatenbankUpdate 11.02.2010\RUNQRY_AEPH\AEPH_001\', SW_Show);
Hier im Forum suchenShellExecute ?!

hathor 11. Feb 2010 16:33

Re: *.bat Datei wird nicht richtig ausgeführt
 
Teste mal das:
Delphi-Quellcode:
    {Execute batch file}
    StrPCopy(Templine, 'temp.bat');
    TaskHandle := ShellExecute(frmMain.Handle, NIL, 'command.com',
                  templine,
                  Tempdir,
                  SW_MINIMIZE);

//and monitor it with a function like this:

    function CheckTask(hInstance: WORD): Boolean;
    var
        TaskInfo: TTASKENTRY;
        RetVal: Boolean;
    begin
        TaskInfo.dwSize := SizeOf(TTASKENTRY);
        RetVal := FALSE;
        if(TaskFirst(@TaskInfo)) then
        begin
            repeat
                if(TaskInfo.hInst = hInstance) then
                begin
                    RetVal := TRUE;
                    Break;
                end;
            until (TaskNext(@TaskInfo) = FALSE);
        end;
        CheckTask := RetVal;
    end;

(*This runs down the task list, trying to find the task with the specified
Hinstance, returning true if it is still there. To use this function,
simply call it in a loop like this*)

    while CheckTask(TaskHandle) do
    begin
        Application.ProcessMessages;
    end;

himitsu 11. Feb 2010 16:34

Re: *.bat Datei wird nicht richtig ausgeführt
 
cmd
echo /?

ECHO ohne was, gibt den Status von ECHO aus.

Code:
echo.
Der Punkt direkt in Anschluß besagt, daß du nur eine Leerzeile willst.


PS: Schneller Finger ... ein "PAUSE"-Befehl am Ende der Batch, gibt ein bissl mehr Zeit :zwinker:

PSS: warum rufst du rtopcb nicht direkt auf?

Ykcim 11. Feb 2010 16:52

Re: *.bat Datei wird nicht richtig ausgeführt
 
Hallo zusammen,

vielen Dank für die schnellen Antworten!

mit turboPASCAL Lösung bin ich weiter gekommen.

Zitat:

ShellExecute(self.handle, 'OPEN','Test.bat', nil, 'F:\Datenupdate\DatenbankUpdate 11.02.2010\RUNQRY_AEPH\AEPH_001\', SW_Show);
Vielen Dank für die Hilfe!!!

Gruß

Ykcim

Ykcim 11. Feb 2010 16:53

Re: *.bat Datei wird nicht richtig ausgeführt
 
Ich habe die Batch-Datei von einem MA aus der EDV erstellen lassen. Ich habe das noch nie gemacht und habe keine Ahnung davon. Gibt es irgendwo eine Übersicht, wie die Datei aufgebaut sein muss, welche Regeln zu beachten sind und welche Möglichkeiten man hat?

Danke

Ykcim

p80286 11. Feb 2010 16:57

Re: *.bat Datei wird nicht richtig ausgeführt
 
Such mal in der MS-Hilfe nach "Batch" bzw. "Batchdateien".

Gruß
K-H

shmia 11. Feb 2010 17:07

Re: *.bat Datei wird nicht richtig ausgeführt
 
Die korrekte Schreibweise des "Verbs" zum Öffnen lautet übrigens 'open' und nicht 'OPEN'.
Neben 'open gibt es für *.bat und *.cmd - Dateien auch noch die Verben 'edit' und 'print'.

Ich glaube ich muss auch mal wieder auf den Unterschied zwischen *.bat und *.cmd Dateien hinweisen.
Code:
*.bat -> wird von COMMAND.COM ausgeführt (veraltet)
*.cmd -> wird von cmd.exe ausgeführt (sollte unter Windows bevorzugt werden)

himitsu 11. Feb 2010 17:13

Re: *.bat Datei wird nicht richtig ausgeführt
 
Startmenü > Programme > Zubehöhr > Eingabeaufforderung
oder
Ausführen "cmd"

dort "help" eingeben
und "befehl /?" gibt weiterführende Hilfe

Es gibt zwar auch hier und da Webseiten, aber so hat man alles aus erster Hand. :angel:

p80286 11. Feb 2010 17:22

Re: *.bat Datei wird nicht richtig ausgeführt
 
Zitat:

Zitat von shmia
Ich glaube ich muss auch mal wieder auf den Unterschied zwischen *.bat und *.cmd Dateien hinweisen.
Code:
*.bat -> wird von COMMAND.COM ausgeführt (veraltet)
*.cmd -> wird von cmd.exe ausgeführt (sollte unter Windows bevorzugt werden)

Wo gibt's da komprimierte tragfähige Infos?
Dieses "veraltet" scheint mir kein Argument. "Nicht mehr unterstützt" ist da schon besser.

Gruß
K-H

shmia 11. Feb 2010 17:31

Re: *.bat Datei wird nicht richtig ausgeführt
 
Zitat:

Zitat von p80286
Dieses "veraltet" scheint mir kein Argument. "Nicht mehr unterstützt" ist da schon besser.

Sagen wir mal so, COMMAND.COM ist nur noch aus Kompatibilitätsgründen an Bord.
What's the difference between COMMAND.COM and CMD.EXE?

himitsu 11. Feb 2010 18:02

Re: *.bat Datei wird nicht richtig ausgeführt
 
die command.com ist doch DOS (16 Bit)
die cmd.exe ist eine Consolen-Anwendung (32 Bit Windows)

Und gibt es nicht mit DOS Probleme in Windows 64 ?

nahpets 12. Feb 2010 08:15

Re: *.bat Datei wird nicht richtig ausgeführt
 
Hallo,

Zitat:

Zitat von shmia
Ich glaube ich muss auch mal wieder auf den Unterschied zwischen *.bat und *.cmd Dateien hinweisen.
Code:
*.bat -> wird von COMMAND.COM ausgeführt (veraltet)
*.cmd -> wird von cmd.exe ausgeführt (sollte unter Windows bevorzugt werden)

woher stammt das "Wissen", dass *.bat von COMMAND.COM ausgeführt wird?
Vergebe in der Regel immer die Endung Bat und habe im Taskmanager noch nie dafür einen COMMAND.COM gesehen, sondern bisher immer nur CMD.EXE.

Einfach mal ausprobieren:

Eine Batchdatei mit folgendem Inhalt erstellen:
Code:
pause
Den Taskmanager öffnen,
Batchdatei aus dem Explorer per Doppelklick starten.

Hier den Screenshot anhängen, in dem ein COMMAND.COM zusätzlich angezeigt wird.

COMMAND.COM habe ich auf diese Weise seit Windows NT 4.0 nicht mehr gesehen.

Bei meinen Rechnern, und all' den in der Administration betreuten, erscheint dann immer "nur" ein CMD.EXE zusätzlich. Mache ich da was falsch oder wird hier immer wieder etwas behauptet, was nicht zwingend der Realität entspricht?

Über Google habe ich keine Bestätigung für die oben gemachte Aussage zu COMMAND.COM und CMD.EXE finden können.

p80286 12. Feb 2010 09:52

Re: *.bat Datei wird nicht richtig ausgeführt
 
Hallo zusammen,

stimmt da war etwas. Unter NT gab es noch eine "Command.com" die sich von der cm.exe unterschied.
Diese "command.com" ist als Datei unter XP nicht mehr vorhanden. Als Console fungiert wohl die cmd.exe. Hier ein Ausschnitt aus der Windows-Hilfe:
Zitat:

Mit Batchdateien, die auch als Batchprogramme (Stapelverarbeitungsprogramme) oder Skripts bezeichnet werden, können Sie Routinetasks oder sich ständig wiederholende Tasks vereinfachen. Eine Batchdatei ist eine nicht formatierte Textdatei, die einen oder mehrere Befehle enthält und die Dateinamenerweiterung .bat oder .cmd hat. Nachdem Sie den Dateinamen an der Eingabeaufforderung eingegeben haben, führt Cmd.exe die Befehle in der Reihenfolge aus, in der sie in der Datei stehen.

Teilweise gibt es Stimmen die *.js als Ersatz für Batch-Dateien propagieren, wobei gerne auf die höhere Leistungsfähigkeit und "Modernität" abgehoben wird.

soweit ich weiß, können *.com Programme unter XP nicht mehr ausgeführt werden (andere innere Struktur,Speicherabbild) aber auch da laß ich mich gerne eines Besseren belehren.

Gruß
K-H

hathor 12. Feb 2010 10:00

Re: *.bat Datei wird nicht richtig ausgeführt
 
Liste der Anhänge anzeigen (Anzahl: 2)
Unter WIN XP kann man unter cmd.exe COMMAND.COM starten.

shmia 12. Feb 2010 10:31

Re: *.bat Datei wird nicht richtig ausgeführt
 
Zitat:

Zitat von nahpets
woher stammt das "Wissen", dass *.bat von COMMAND.COM ausgeführt wird?

Eigene Erfahrungen.
Es ist schon so, dass Windows normalerweise dem Kommandointerpreter cmd.exe den Vorzug gibt.
Man merkt das z.B. daran:
Code:
C:\>command.com /P
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
Der Vdm-Redirector ist bereits geladen.

C:\>ver

Microsoft Windows XP [Version 5.1.2600]

C:\>
Obwohl command.com permanent geladen ist, wird dennoch cmd.exe ausgeführt.
Unter bestimmten Umständen(*) wird aber tatsächlich noch COMMAND.COM (MS-DOS Version 5.00.500!) angezogen.
*) Batchdatei ruft andere Batchdatei auf
Diese Umstände scheinen sich durch die Servicepacks verändert zu haben.
Ausserdem hängt es auch mit der Umgebungsvariable ComSpec zusammen.

Auf Windows 2000 sieht die Sache so aus:
Code:
C:\Dokumente und Einstellungen\Administrator>ver

Microsoft Windows 2000 [Version 5.00.2195]

C:\Dokumente und Einstellungen\Administrator>command.com
Befehl oder Dateiname nicht gefunden
VDM-IPX/SPX-Unterstützung kann nicht geladen werden.
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-1999.

C:\DOKUME~1\ADMINI~1>
Hier erkennt man den kurzen Pfadnamen, dass tatsächlich COMMAND.COM geladen wurde.
Auf "alten" Windowsversionen ist *.bat mit COMMAND.COM verknüpt.
Microsoft hätte bestimmt auch nicht *.cmd eingeführt, wenn dahinter nicht eine bestimmte Absicht stehen würde:
*.cmd verwendet immer cmd.exe, während *.bat ursprünglich auf COMMAND.COM verweist und später auf das neuere cmd.exe migriert wird.

himitsu 12. Feb 2010 12:18

Re: *.bat Datei wird nicht richtig ausgeführt
 
.com laufen im XP noch, aber in einem 64-Bit-Windows wohl nicht mehr (richtig).


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz