![]() |
Kommandozeilen-Compiler dcc32
Hi,
weiß jemand, wie man dem Teil beibringt, selbst eine RES Datei anzulegen, sofern sie nicht da ist ? In der IDE kommt die Warnung "nicht vorhanden. Wird neu angelegt". Ich muß 30 Programme auf einmal compilieren. Die könnte ich zwar alle in die IDE laden, aber das ists wohl nicht. Zumal sich der Fall wahrscheinlich wiederholen wird. |
Re: Kommandozeilen-Compiler dcc32
Wenn Du Windows NT hast (erweiterte Syntax des FOR-Befehls), grep.exe im Pfad (Delphi6\Bin), in %Temp% eine default.res und die Untervezeichnisse der Projekte keine Leerezeichen enthalten (weil grep den Dateinamen ohne "" zurückgibt),
dann, aber auch nur dann...
Code:
In einer Batch muss jedes % in %% geändert werden.
FOR /F "usebackq" %I IN (`grep.exe -ldor- "{$R *.res}" *.dpr`) DO IF EXIST "%~dpnxI" IF NOT EXIST "%~dpnI.res" COPY "%Temp%\default.res" "%~dpnI.res"
Viel Spass ps: warum shreibst Du nicht eben ein Tool dafür? |
Re: Kommandozeilen-Compiler dcc32
Das ist ja schön und gut, aber was soll ich mit grep ? Ich weiß vorher schon, daß die *.res gebraucht wird. In der IDE wird die erzeugt, falls sie nicht da ist. dcc32 hat genügend Schalter, aber den für diesen Zweck finde ich nicht. Oder gibt es den gar nicht ? Könnte theoretisch sein. Dann erkläre mir bitte mal, was Deine Batch da genau machen soll. 8) Momentan habe ich Programm No. 18 in der IDE, damit die RES neu erzeugt wird, besser wäre es alles auf einen Schlag neu zu compilieren.
|
Re: Kommandozeilen-Compiler dcc32
Ich wüßte nicht, dass einen dcc32-Schalter dafür gibt, sorry.
grep sucht in diesem Falle ab dem aktuellen Verzeichnis rekursiv nach allen *.dpr, welche den Text '{$R *.res}' enthalten und gibt die Dateinamen zurück, die wiederum mit der FOR-Schleife bearbeitet werden. Wenn der zusammengesetzte Dateiname (dpr) existiert (Paranoia wegen Leerzeichen in Unterverzeichnissen), wird nachgesehen, ob die *.res existiert - wenn nicht wird die %temp%\default.res mit dem richtigen Namen dorthin kopiert... ...kann man auch komplizierter machen ;) |
Re: Kommandozeilen-Compiler dcc32
Langsam weiß ich, was Du da vorhast. Aber eigentlich würde doch dann auch ein IF NOT EXIST {RES} blabla reichen, ohne grep ? Ich hasse diese Batch Syntax. Und Schalter gibt es keinen ? Ich finde ihn ja selbst nicht. Also ist das wohl wirklich nur in der IDE.
|
Re: Kommandozeilen-Compiler dcc32
Zitat:
Ich bin von ca. fünftausend Projekten ausgegangen ;) |
Re: Kommandozeilen-Compiler dcc32
Zitat:
|
Re: Kommandozeilen-Compiler dcc32
Zitat:
ps: Die Projekt-Verwaltung (Modules.TProject) ist in der CoreIDExx.bpl (Core Integrated Development Environment) implementiert. TProject erstellt (ResUtils.TResFile) mit dem 'MAINICON' der Hautpinstanz (IDE) die neue Ressourcendatei... Da der Compiler wenig mit der CoreIDE zu schaffen hat, müsste es dort doppelt implementiert sein (wovon ich nicht ausgehe...). ps2: wie wäre es mit delphi32.exe Project.dpr -m -ns |
Re: Kommandozeilen-Compiler dcc32
Zitat:
Es dürfen also Leerzeichen verwendet werden.
Code:
FOR /F "usebackq tokens=*" %I IN (`grep.exe -ldor- "{$R *.res}" *.dpr`) DO IF EXIST "%~dpnxI" IF NOT EXIST "%~dpnI.res" COPY "%Temp%\default.res" "%~dpnI.res"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz