Seite 2 von 4
Re: BAT to EXE
Verfasst: 29.04.2011 20:35
von Falko
RSBasic hat geschrieben:Dann kann man doch gleich die Konsole benutzen. Somit braucht man nicht ständig irgendwelche Parameter übergeben:
Code: Alles auswählen
ImportC "msvcrt.lib"
system(cmd.p-ascii)
EndImport
If OpenConsole()
system("title Test Batch")
system("dir")
system("echo PureBasic Forever")
system("pause")
CloseConsole()
EndIf
Geht doch also auch ohne Temp
Danke für deinen Tip und schöne Grüße,
Falko
Re: BAT to EXE
Verfasst: 29.04.2011 20:46
von ts-soft
So ist es ja keine Batch-Datei mehr und die Vorteile sind damit auch flöten gegangen.
Batch arbeitet ja eine Program nach dem anderen ab, jetzt wartet aber eure ganze
Anwendung.
Re: BAT to EXE
Verfasst: 29.04.2011 21:09
von Coder Pinhead
Danke erst mal für die vielen guten Tipps.
Ich hab jetzt mal das von Falko versucht.
Falko hat geschrieben:
Code: Alles auswählen
MyBatch.s="/C @echo on"
MyBatch+"& title Test Batch"
MyBatch+"& dir"
MyBatch+"& pause"
RunProgram("cmd",MyBatch,"")
Und an einer stelle im Skript kommt es bei mir zu einem Problem.
Code: Alles auswählen
MyBatch.s="/C @echo on"
MyBatch+"& title Sehr lange Batch-Datei"
MyBatch+"& ren %USERPROFILE%\Desktop\irgendeinedatei.exe "backup %tag%.%monat%.%jahr%.exe" 2>NUL >NUL"
MyBatch+"& pause"
RunProgram("cmd",MyBatch,"")
Fehler Meldung:
Zeile 3: 'backup' ist kein gültiger Operator.
Mir ist zwar klar weshalb es zum Fehler kommt und zwar wegen dem "" bei
"backup %tag%.%monat%.%jahr%.exe" weiß nur nicht wie ich das Problem beseitigen kann damit das Batch Skript richtig funktioniert.
Re: BAT to EXE
Verfasst: 29.04.2011 21:11
von RSBasic
Verwende stattdessen Chr(34).
Re: BAT to EXE
Verfasst: 29.04.2011 21:18
von Falko
Das sieht dann so aus
Code: Alles auswählen
MyBatch+"& ren %USERPROFILE%\Desktop\irgendeinedatei.exe "+Chr(34)+"backup %tag%.%monat%.%jahr%.exe"+Chr(34)+"2>NUL >NUL"
Gruß, Falko
Re: BAT to EXE
Verfasst: 29.04.2011 21:21
von Coder Pinhead
RSBasic hat geschrieben:Verwende stattdessen Chr(34).
Falko hat geschrieben:Code: Alles auswählen
MyBatch+"& ren %USERPROFILE%\Desktop\irgendeinedatei.exe "+Chr(34)+"backup %tag%.%monat%.%jahr%.exe"+Chr(34)+"2>NUL >NUL"
Danke euch beiden das hat zwar geklappt.
Aber das Skript läuft trotzdem nicht ganz rund.
Also zum nächsten Problem und zwar sollte wenn es nach der Batch-Datei geht die Datei am ende so "
Backup 29.04.2011.exe" und nicht so "
Backup %tag%.%monat%.%jahr%.exe" aussehen.
Kann es sein das die Befehle durch PureBasic anders verarbeitet werden und man dieses Problem nur so Lösen kann indem man es direkt in PureBasic Programmiert?
Re: BAT to EXE
Verfasst: 29.04.2011 21:37
von RSBasic
Versuch stattdessen folgende Umgebungsvariable:
Ausgabe:
cmd.exe hat geschrieben:29.04.2011
Re: BAT to EXE
Verfasst: 29.04.2011 21:42
von ts-soft
Die Environmentvariablen mußte wohl auflösen lassen: ExpandEnvironmentStrings_()
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Aber das ganze macht einfach keinen Sinn. Schreibe ein Batch und starte es und Dein
Programm kann weiterlaufen, wäre dann auch der einzige Vorteil des Batches.
Wenn Du diesen Vorteil sowieso nicht nutzt, wäre es mit Sicherheit besser, das ganze
in PB umzuschreiben. Die netten Tipps der Kollegen funktionieren zwar, ersetzen aber
den einzigen Vorteil des Batches nicht, somit also nicht sinnvoll (auch funktionierendes
ist nicht immer Sinnvoll).
Re: BAT to EXE
Verfasst: 29.04.2011 21:46
von Coder Pinhead
Hat auch geklappt danke.
Dann wäre da noch eine Sache die auch nicht so richtig funktioniert und zwar Sprünge.
Denke mal das man das so einfach bestimmt nicht Lösen kann, oder?
Wird wohl doch besser sein das teil einfach direkt in PureBasic zu Programmieren.
Bin nur ark aus der Übung da ich seit etwas über 3 Jahren nichts mehr gemacht hab.
Re: BAT to EXE
Verfasst: 29.04.2011 22:00
von Falko
Da muss ich nun mal ts-soft zu den echten Batch-Dateien Recht geben

.
Die Sprungmarken können nur über die Bat-Datei erneut eingelesen werden bzw. angesprungen werden.
Da aber keine echte BAT-Datei existiert, kommt eben folgender Fehler:
CMD.EXE hat geschrieben:Ungültiger Versuch, ein Sprungziel außerhalb einer Batchdatei aufzurufen.
Um dieses dann nutzen zu können, wäre eine temporäre BAT-Datei die bessere Lösung, welche man nach der
Ausführung sofort löschen kann.
Gruß, Falko