Wie ruft man in der .bat Datei ein Programm auf?

Hier dürfen auch unregistrierte Besucher posten.
Antworten
Dosfan

Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Hallo

ich habe folgende .bat Datei mit dem Namen dcompile.bat

@echo off
REM ================================
REM DOS-kompatibles Build-Skript für go32v2
REM ================================

REM Pfad zum DOS go32v2 FPC Compiler (in G: gemountet)
SET FPC=G:\BIN\GO32V2\FPC.EXE rem der FPC Compiler für DOS
REM Library-Pfad für Units
SET LIB=G:\FPC\PROJECTS\FPGUIDOS\LIB\GO32V2 rem will damit den Unit Binärpfad einstellen

REM Prüfen, ob der Compiler existiert
IF NOT EXIST %FPC% GOTO NOTFOUND rem warum wirr FPC nicht gefunden obwohl im Pfad?

REM Quellcode-Pfad (alle Pfade müssen in 8.3-Format sein)
SET SRC=G:\FPC\PROJECTS\FPGUIDOS\SRC\DOSUNITS\__FPGUI.PAS rem will damit den Source-pfad einstellen



ECHO ================================
ECHO Starte DOS Build für go32v2
ECHO ================================

REM Kompiliere
G:\BIN\GO32V2\FPC.EXE -TGO32V2 -PI386 -FU%"LIB%" "%SRC%" rem so will ich den Compiler aufrufen

GOTO END

:NOTFOUND
ECHO FPC nicht gefunden! Prüfe Pfade!
:END
ECHO Build fertig.
PAUSE


Warum funktioniert dieser Aufruf nicht? Habe doch den Pfad korrekt angegeben, in der Dosbox nochmals geprüft.
Auch die Quellcode Pfade stimmen. Was ist da in der .bat Datei noch falsch?
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 269
Registriert: So 17. Mär 2019, 19:14

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von schubl »

Hi!

Ist Deine bat-Datei inkl aller rems?
Dann kann das mal nicht funktionieren, weil REM in batches nicht wie in z.B. Basic funktioniert.
SET FPC=G:\BIN\GO32V2\FPC.EXE rem der FPC Compiler für DOS
setzt die Variable FPC auf den Wert "G:\BIN\GO32V2\FPC.EXE rem der FPC Compiler für DOS" somit hast Du den falschen Dateinamen in der Variable.

Und beim Aufruf hast Du " und % vertauscht bei -FU%"LIB%"

schubl
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Wie mache ich es dann richtig? Ich probier schon mehrere Tage daran rum und komme einfach nicht auf die korrekte Syntax. Und wie formuliert man dann in der .bat Datei die Kommentare? Ich habe noch nie groß mit .bat Dateien gearbeitet. Sorry!
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Wie mache ich es dann richtig? Ich probier schon mehrere Tage daran rum und komme einfach nicht auf die korrekte Syntax.
Ich habe vor sehr langer Zeit mal eine Batch Datei geschrieben, weiß aber leider gar nichts mehr davon, ich dachte aber ich könnte das noch. Wo gibt es anfängerfreundliche Dokus dafür, mit leicht verständlichen Beispielen? Und wie formuliert man dann in der .bat Datei die Kommentare? Ich habe noch nie groß mit .bat Dateien gearbeitet. Sorry!
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 269
Registriert: So 17. Mär 2019, 19:14

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von schubl »

Du könntest mal folgendes probieren:

Code: Alles auswählen

@echo off
REM ================================
REM DOS-kompatibles Build-Skript für go32v2
REM ================================

REM Pfad zum DOS go32v2 FPC Compiler (in G: gemountet)
REM der FPC Compiler für DOS
SET FPC=G:\BIN\GO32V2\FPC.EXE
REM Library-Pfad für Units
SET LIB=G:\FPC\PROJECTS\FPGUIDOS\LIB\GO32V2

REM Prüfen, ob der Compiler existiert
IF NOT EXIST %FPC% GOTO NOTFOUND

REM Quellcode-Pfad (alle Pfade müssen in 8.3-Format sein)
SET SRC=G:\FPC\PROJECTS\FPGUIDOS\SRC\DOSUNITS\__FPGUI.PAS

ECHO ================================
ECHO Starte DOS Build für go32v2
ECHO ================================

REM Kompiliere
G:\BIN\GO32V2\FPC.EXE -TGO32V2 -PI386 -FU"%LIB%" "%SRC%"
ECHO Build fertig.
GOTO END

:NOTFOUND
ECHO FPC nicht gefunden! Prüfe Pfade!

:END
PAUSE
REM in DOS ist wie ein Befehl und darf deshalb nur alleine in einer Zeile stehen.

schubl
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Danke Dir, wie verrückt, jetzt funktioniert das Batch File. Musste allerdings die -PI386 Option entfernen, damit das funktioniert, ich hoffe jetzt einfach mal dass -Pi386 Option die Standard Einstellung ist, anderenfalls muss ich die Schreibweise dieser Option ändern, falls das Kompilat nicht funktioniert. Allerdings akzeptiert Freepascal auch meine beiden Unterstriche am Beginn meines Dateinamen nicht. Dieen muss ich deshalb auch noch ändern. Aber so kann ich jetzt weiter machen. Der Buchstabe "i" in der Option für die CPU muss lt. Liste der Kommandozeilenoptionen klein geschrieben werden, nur das "P" ,das die Option kennzeichnet, bleibt groß gesschrieben. Du hast in der Batch Datei dieses "I" aber auch groß geschrieben. Deshalb wurde dies Option nicht akzeptiert. Habe sie erst mal entfernt. Wenn ich sie doch benötigen sollte muss ich die Schreibweise halt anpassen. Kleines "i" dann! Das Andere passt so. Danke!
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 269
Registriert: So 17. Mär 2019, 19:14

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von schubl »

Freut mich, dass es jetzt funktioniert.
Das I hab ich von Deinem Beitrag kopiert, kenne die Optionen von FPC nicht ;-)

schubl
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Jetzt tritt anderes Problem auf, ich kann meine Dateien nicht in meinen Ordner kopieren.

xcopy f:\FPC\Projects\fpguidos\src\dosunits\ *.* G:\FPC\PROJECTS\FPGUIDOS\SRC\DOSUNITS\ /E /C \H \I

Der Kopiervorgang wird nicht ausgeführt, bricht mit der Fehlermeldung ab, dass er den Ordner dosunits nicht erstellen könne, den habe ich aber vorher schon erzeught. was ist da jetzt los? Schreibrecte liegen vor.
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 269
Registriert: So 17. Mär 2019, 19:14

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von schubl »

xcopy f:\FPC\Projects\fpguidos\src\dosunits\ *.* G:\FPC\PROJECTS\FPGUIDOS\SRC\DOSUNITS\ /E /C \H \I
vor *.* ist ein Leerzeichen und die beiden letzten Optionen haben einen \ statt einen /

Probiers mal mit
xcopy f:\FPC\Projects\fpguidos\src\dosunits\*.* G:\FPC\PROJECTS\FPGUIDOS\SRC\DOSUNITS\ /E /C /H /I
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Leider auch nicht, irgendwas scheint hier generell nicht zu stimmen. Aber was? ich arbeite mit Dosbox-x, deren .conf Datei sieht so aus:

[dosbox]
securemode=false
longnames=false
ffn=false
memsize=131072

[sdl]
fullscreen=false


[cpu]
core=normal
cputype=pentium
cycles=auto


[dos]
lfn=true
emm=true

[dpmi]
dpmi.memory = 2048

[autoexec]

#f:\starlfn -I F
ver=7.1

mount f c:\dosimages\
#f:\lfn\doslfn -w+ -t+
imgmount h c:\dosimages\fd14full.img
imgmount g c:\dosimages\dos.img -t hdd fat

g:
mkdir fpc_tmp
cd fpc_tmp
SET CWSDPMI_SWAP=G:\fpc_tmp

g:\fpc\bin\go32v2\cwsdpmi -p -s-


xcopy F:\fpc\projects\fpGUIdos\src\dosunits\*.* g:\fpc\projects\fpGUIdos\src\dosunuts\ /E /C /H /I aber auch

copy F:\fpc\projects\fpGUIdos\src\dosunits\*.* g:\fpc\projects\fpGUIdos\src\dosunuts\ will nicht so, wie ich will

Habe auch extra noch mal in mein Laufwerk f: geguckt, ob da überhaupt kopierbare Dateien drin sind im Oddner ..\..\
dosunits\

Ich weiß echt nicht mehr weiter.
Dosfan

Re: Wie ruft man in der .bat Datei ein Programm auf?

Beitrag von Dosfan »

Alles gut. Kopieren hat funktioniert, es war ein Schreibfehler meinerseits, nicht der Backslash anstelle des Vorwärts Slash, den hatte ich vorher schn korrigiert, nein es war der Ordnername \dosunuts statt \dosunits. Das kann natürlich nicht funktionieren. :peanutbutterjellytime: Darf wohl auch nicht mal in einer super guten KI funktionieren, dann würde ich meine Units im falschen Ordner suchen. (dosunuts statt dosunits). Frustrierend solche Schreibfehler. Ich sollte mir jetzt erst mal ne Pause gönnen! :roll:
Antworten