BAT-Datei ausführen mit ExecFile
Übersicht

![]() |
EingeproggtBetreff: BAT-Datei ausführen mit ExecFile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo wiedermal.
Ich hab schon wieder so nen Mini-Code, der einfach nicht das tut, was er soll. Diesmal will ich eine mit Blitz heruntergeladene Datei aus einem Ordner in den anderen verschieben. Ohne CopyFile! Es liegt nahe, dass ich mich den guten alten DOS-Befehlen bediene. Sowohl Datei herunter laden als auch tmp.bat Datei händisch ausführen funktioniert. Nur die Datei in Blitz ausführen schaff ich nicht ![]() ![]() Code: [AUSKLAPPEN] writer=WriteFile(CurrentDir()+"temp\tmp.bat")
WriteLine(writer,"MOVE "+Chr(34)+CurrentDir()+"temp\test.exe"+Chr(34)+" "+Chr(34)+CurrentDir()+"test.exe"+Chr(34)) WriteLine(writer,Chr(34)+CurrentDir()+"test.exe"+Chr(34)) CloseFile writer ExecFile CurrentDir()+"temp\tmp.bat" Hoffe, das Problem ist verständlich und vor allem einfach zu lösen. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es könnte Probleme geben, eine Datei zu schreiben und in weniger als einer Millisekunde schon ausführen zu wollen. Daher müsste man eine Pause anlegen, die aber bei jedem System unterschiedlich lang ist. Also müsste eine Warteschleife gemacht werden, die überprüft, bis Windows die Datei freigegeben hat. Da das alles mehr schlecht als recht ist, würde ich auf blitzinterne Befehle zurückgreifen. Du willst aber anscheinend das nicht, also schaue dir mal den DOS-Befehl CMD an. Damit solltest du alle deine Sachen auch ausführen können, ohne dabei eine Datei schreiben zu müssen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für den Hinweis, eine Pause wär angebracht. Hab diesen Teil direkt vor ExecFile gegeben:
Code: [AUSKLAPPEN] Repeat
Delay 100 Until FileType(CurrentDir()+"temp\tmp.bat")=1 Aber es ist immernoch dasselbe. Was die Verwendung von CMD oder Blitzinternen Befehlen angeht: Ja, ich würde sie auch lieber benutzen, aber es steckt Folgendes dahinter: Meine Datei soll eine Datei aus dem Internet laden und sich selbst ersetzen sozusagen. Dazu muss man auf Bat ausweichen, oder? Ein Problem könnte allerdings sein, dass mein Programm ja noch läuft, nachdem es die Bat aufgerufen hat. Da müsste ich auch noch die laufende Exe killen... Aber so weit bin ich noch nicht. Bis jetzt teste ich nur den Code anhand einer Dummy-Datei, die verschoben werden soll. mfG, Christoph. EDIT: Hab den Code kompiliert und nochmal getestet. Es funktioniert auch so nicht. Bemerkenswert finde ich jedoch, dass das BB-Programm bei ExecFile den Fokus verliert, allerdings kein Prozess oder Task geöffnet wird. Zumindest merk ichs nicht... |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kein Spiel datet sich so, wie du beschrieben hast, sich selbst up. In deinem Fall müsste auch die Batchdatei auf das Beenden der Hauptdatei warten. Da so ein Vorhaben nur auf Probleme stoßen kann, würde ich auf eine manuelle Aktualisierung legen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe eine Idee für einen Workaround:
Du rufst die heruntergeladene Datei mit einem bestimmten Parameter auf und beendest das Programm. Das Programm erkennt den Parameter und kopiert sich selbst (in Stiller Hoffnung, dass das geht) ins übergeordnete Verzeichnis und ruft dieses mit einem anderen Parameter auf. Dieses wiederum erkennt den Parameter und löscht die Datei im temp Verzeichnis. Kompliziert, könnte aber funktionieren. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bekommt man bei dieser Lösung nicht auch Probleme mit ExecFile?
Dieser Befehl wartet ja auf die Beendigung des aufgerufenen Programms. Oder Moment. Da wäre dann die Anwendung von CMD besser, oder? Ich werd das im Laufe des Tages versuchen. Hoffentlich wirds was ![]() Danke! |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mir mal überlegt ein Setup zu machen, der in einer anderen Grafikauflösung (Fenster) als das Spiel selbst läuft (Usereingabe auf Vollbild oder Fenster). Mein erster Lösungsansatz war es mit zwei .exe -Dateien zu machen, wo dann eben ein Parameter zur anderen geschickt wird, in welcher Auflösung gestartet werden soll. Was ich aber blöd fand. Das gleiche kann man auch mit nur einer .exe machen, die sich selbst aufruft. Dabei wartet die erst aufgerufene nicht auf das Ende der zweitaufgerufene...
Beispielcode: Code: [AUSKLAPPEN] cl$=CommandLine()
If cl="" Graphics 400,300,0,2 SetBuffer BackBuffer() AppTitle "1" Print "Taste drücken" WaitKey ExecFile "start.exe +blub" For q=1 To 1000 Print "Als Beweis, ich geh jetzt mal" Next Flip End End If Graphics 800,600,0,2 SetBuffer BackBuffer() AppTitle "2" Print "Ich bin die Nr. 2" WaitKey End Das funktioniert nur mit einer compilierten .exe und diese muss ''start.exe'' heissen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
teste mal: execfile (chr$(34)+currentdir$()+"blubb.bat"+chr$(34)) | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry, hab wohl vergessen zu erwähnen, dass das Thema längst vom Tisch ist. Ich arbeite nun mit den Blitz Befehlen und halt 2 verschiedenen Exe, die sich selbst managen ![]() mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group