BAT to EXE

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: BAT to EXE

Beitrag von shadow »

Würd's ein Lua-Script nicht einfach auch tun :?
Also soviel ich weiß kann diese Skript-Sprache alles was BATCH kann und irgendjemand in der Community hat doch schon eine Integration für PB gemacht (hab ich mal gelesen hier irgendwo...).
Des Weiteren gibt es auch PB-Skript als nette alternative... Nur mal so am Rande, denn BATCH finde ich nicht so prickelnd weil einfach zu viele wichtige Funktionen nicht vorhanden sind...
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: BAT to EXE

Beitrag von Falko »

Coder Pinhead hat geschrieben:
RSBasic hat geschrieben:

Code: Alles auswählen

%date%
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.
Ich habe das nun mit RSBasic's Codebeispiel und Sprungmarken versucht. Somit kannst du
das evtl. so lösen. Hierzu ein Beispiel, wobei die Sprungmarken über PB und nicht per Batch-Befehl
erzeugt werden.

Code: Alles auswählen

ImportC "msvcrt.lib"
  system(cmd.p-ascii)
EndImport

If OpenConsole()
  system("@echo off")
  system("title Test Batch")
  system("ren %USERPROFILE%\Desktop\irgendeinedatei.exe "+Chr(34)+"backup%date%.exe"+Chr(34)+"2>NUL >NUL")
  Goto springe  ;system("goto springe") geht nicht, daher Sprünge direkt in PB mit Goto
  system("echo hallo"); dieses Echo wird aufgrund des Sprungs nicht ausgeführt.
  springe: ; system(":springe") geht leider auch nicht, daher Sprungmarken am Besten als PB-Befehl einbauen.
  system("echo gesprungen") ; wird beim Sprung jetzt korrekt angesprungen
  system("pause")
  CloseConsole()
EndIf
Ich hoffe, damit kannst du was anfangen.

Gruß, Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: BAT to EXE

Beitrag von ts-soft »

Aber was kann denn nun ein Batch, was PB nicht kann :lol:
Man kann sich das Leben natürlich schwer und kompliziert machen, aber warum sollte man das tun?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: BAT to EXE

Beitrag von Waldixxl »

Hallo Coder Pinhead

Versuch doch einfach aus der Bat-Datei ein EXE zu machen. (z.B mit "Bat To Exe Converter 1.5.1")
Dann kannst Du deine Ursprünglich Idee mit IncludeBinary weiter verfolgen!
Gruß
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: BAT to EXE

Beitrag von Bisonte »

ts-soft hat geschrieben:Aber was kann denn nun ein Batch, was PB nicht kann :lol:
Man kann sich das Leben natürlich schwer und kompliziert machen, aber warum sollte man das tun?
Diese beiden Fragen beschäftigen mich seit dem ich den Thread das erstemal erblickte....

Irgendein Programm starten... Kopieren... wassweissich... ist alles sogar nativ crossplatformed in PB.

Es schreckt wahrscheinlich ab, dass man evt. 2-3 Zeilen mehr Code schreiben müsste....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Re: BAT to EXE

Beitrag von Coder Pinhead »

Falko hat geschrieben:

Code: Alles auswählen

ImportC "msvcrt.lib"
  system(cmd.p-ascii)
EndImport

If OpenConsole()
  system("@echo off")
  system("title Test Batch")
  system("ren %USERPROFILE%\Desktop\irgendeinedatei.exe "+Chr(34)+"backup%date%.exe"+Chr(34)+"2>NUL >NUL")
  Goto springe  ;system("goto springe") geht nicht, daher Sprünge direkt in PB mit Goto
  system("echo hallo"); dieses Echo wird aufgrund des Sprungs nicht ausgeführt.
  springe: ; system(":springe") geht leider auch nicht, daher Sprungmarken am Besten als PB-Befehl einbauen.
  system("echo gesprungen") ; wird beim Sprung jetzt korrekt angesprungen
  system("pause")
  CloseConsole()
EndIf
Im großem und ganzen funktioniert jetzt alles abgesehen von einer Kleinigkeit und zwar dem %errorlevel%.

Code: Alles auswählen

... befehle
... ohne
... ende
system("If errorlevel 1 Goto error")
system("If errorlevel 0 Goto noerror")
error:
system("echo Fehler")
noerror:
system("echo Kein Fehler")
... usw...
Laut Google kann man so was so lösen

Code: Alles auswählen

Try
  '...
 Catch ex As Exception
   Environment.Exit(1) 'Errorlevel = 1
 End Try

 Environment.Exit(0) 'Errorlevel = 0
End Sub
Aber das Code Beispiel ist leider für Visual-Basic.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: BAT to EXE

Beitrag von Falko »

Probiere doch folgendes aus:

Code: Alles auswählen

  system("if %errorlevel% == 0 (echo kein Fehler)")
  system("if %errorlevel% == 1 (echo Fehler)")
Mit dem Goto oder Call innerhalb der selben batch funktioniert das mit der
CMD.exe leider nicht, da diese wohl die batdatei benötigt um intern diese nochmal
aufzurufen, damit gesprungen werden kann.
Wenn du aber nur Fehler ausgeben willst, könntest du es wie oben nutzen
[Edit] Aber...
mit dieser Zeile ist es auch möglich andere Anwendungen mittels errorlevel direkt auszuführen.

Code: Alles auswählen

 system("if %errorlevel% == 0 (call notepad.exe)")
[/Edit]
Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: BAT to EXE

Beitrag von Danilo »

Coder Pinhead hat geschrieben:Im großem und ganzen funktioniert jetzt alles abgesehen von einer Kleinigkeit und zwar dem %errorlevel%.
In PureBasic bekommst Du den errorlevel mit ProgramExitCode()

Code: Alles auswählen

Program = RunProgram(...,...,...,#PB_Program_Open)
...
errorlevel = ProgramExitCode(Program)

If errorlevel
  Print("Fehler")
Else
  Print("Kein Fehler")
EndIf
Und selbst gibst Du ihn mit "End errorlevel" zurück.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Re: BAT to EXE

Beitrag von Coder Pinhead »

Verstehe das mit ProgramExitCode() und End errorlevel in dem fall nicht so ganz wie ich das einbringen kann bzw so wie ich es gerade mal ausprobiert hatte wahrscheinlich falsch hatte es das Programm direkt nach dem ausführen beendet ohne die Sprünge zu berücksichtigen.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: BAT to EXE

Beitrag von Falko »

Nur brauchst du für die Ausgabe der Errorlevel wiedermal
das Runprogramm... in der die CMD aufgerufen wird.

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten