Seite 1 von 1

Batch dateien und stringfunktionen

Verfasst: 09.12.2004 15:17
von Norbie
Hi!
Ich will mir ne Batchdatei schreiben die ein Assemblercode verarbeitet und Linkt.
Die sieht so aus:

Code: Alles auswählen

cd c:\asm

ml /c %1%
dlink %1%
in %1% ist der Pfad zur Datei mit dem Code. ml will das so haben, aber dlink will nur den Dateinamen ohne Pfad und Endung. Wie kann ich das aus %1% herrausfiltern?

Danke

Verfasst: 09.12.2004 19:53
von Team100
... mit Batch-Hilfsmitteln fast gar nicht.

- einfachste Methode: beim Linker ein %2 statt %1
und beim Aufruf eben als Parameter einmal %1 übergeben
(Pfad + Dateiname) und als zweiten Parameter nur den
Datinamen.

- besser: Du schreibst Dir einen PB 3-Zeiler, dem Du
den Parameter mitgibts. Das PB-Programm füllt Dir
die Batch-Datei aus (mit den passenden Parametern)
und Du läßt den Batch im Anschluß mit RunProgram
CMD /C batdatei.bat ..... laufen (XP, 2k NT4).

oder schreibst diese PB.exe in eine eigene Start.bat
und diese ruft dann als letzten Befehl die eigentliche
ausgefüllte .bat auf


- mit Würgen, aber nur mit Batch:
Aus dem Parameter eine Datei erstellen
darauf ein dir /b machen. Das Ergebnis ist der Dateiname ohne Pfad
Daraus den 2. Parameter bilden.
Datei löschen

Viel Erfolg

Cu von Team100

Re: Batch dateien und stringfunktionen

Verfasst: 10.12.2004 00:37
von helpy
Norbie hat geschrieben:Hi!
Ich will mir ne Batchdatei schreiben die ein Assemblercode verarbeitet und Linkt.
Die sieht so aus:

Code: Alles auswählen

cd c:\asm

ml /c %1%
dlink %1%
in %1% ist der Pfad zur Datei mit dem Code. ml will das so haben, aber dlink will nur den Dateinamen ohne Pfad und Endung. Wie kann ich das aus %1% herrausfiltern?
Auf Windows XP bzw. Windows 2000 eine Batchdatei "batch_link.bat":

Code: Alles auswählen

:: Voller Pfad der Datei
Set FullPath=%~f1

::Dateiname ohne Pfad und Endung
Set FileName=%~n1

:: Laufwerk wechseln
c:

:: Verzeichnis wechseln
cd \asm

:: ml aufrufen
ml /c %FullPath%
:: Wenn der volle Pfad Leerzeichen enthält dann: ml /c "%FullPath%"


:: dlink aufrufen
dlink %FileName%
:: Wenn der Dateiname Leerzeichen enthält dann: dlink "%FileName%"
Das hab' ich jetzt nicht getestet, aber sollte so gehen.

Aufruf mit: batch_link Pfad\zum\Dateinamen.ext
(wenn Leerzeichen im Pfad dann mit Anführungszeichen!)

Befindest Du Dich im Verzeichnis asm-Datei dann sollte es auch reichen, wenn Du nur den Dateinamen mit der Extension angibst.

Wenn Du willst, dass nach dem Ausführen der Batchdatei wieder ins ursprüngliche Verzeichnis gewechselt wird, dann ändere die Batchdatei:

Code: Alles auswählen

:: Voller Pfad der Datei
Set FullPath=%~f1

::Dateiname ohne Pfad und Endung
Set FileName=%~n1

:: Aktuelles Verzeichnis merken und zu c:\asm wechseln
:: (geht auch Laufwerk-übergreifend)
pushd c:\asm

:: ml aufrufen
ml /c %FullPath%
:: Wenn der volle Pfad Leerzeichen enthält dann: ml /c "%FullPath%"


:: dlink aufrufen
dlink %FileName%
:: Wenn der Dateiname Leerzeichen enthält dann: dlink "%FileName%"

:: Zum ursprünglichen Verzeichnis wechseln
:: (geht auch Laufwerk-übergreifend)
popd
cu, helpy

Anmerkunge: Den Doppel-Doppelpunkt "::" nehme ich für Kommentare!


Nachtrag: Statt ins Verzeichnis C:\asm zu wechseln reicht es evt aus, die PATH-Umgebungsvariable zu setzen, dann spart man sich das mit dem Verzeichniswechseln:

Code: Alles auswählen

set PATH=%PATH%;C:\asm

Re: Batch dateien und stringfunktionen

Verfasst: 10.12.2004 13:00
von Kaeru Gaman
helpy hat geschrieben:Anmerkunge: Den Doppel-Doppelpunkt "::" nehme ich für Kommentare!
nur mal aus interesse: aus welcher sprache stammt dieses?

Re: Batch dateien und stringfunktionen

Verfasst: 10.12.2004 13:46
von helpy
Kaeru Gaman hat geschrieben:
helpy hat geschrieben:Anmerkung: Den Doppel-Doppelpunkt "::" nehme ich für Kommentare!
nur mal aus interesse: aus welcher sprache stammt dieses?
Der Doppelpunkt wird in Batch-Dateien für Sprungmarken verwendet ":Sprungmarke" ... damit kannst Du sogar kleine Unterprogramme schreiben (unter XP und 2000 können sogar Parameter an diese Unterprogramme übergeben werden).

Zwei Doppelpunkte hintereinander ... na ja ist nicht so sauber ... "REM " wäre in Batch eigentlich die Kennzeichnung für Kommentare ... "::" ist jedoch kürzer und für mich ist so die Batch-Datei leichter lesbar ... und funktioniert einwandfrei.

Ich hab' noch keine Geschwindigkeitsvergleiche gemacht, ob es da unterschiede zwischen "REM" und "::" gibt. ... aber für Batch-Programme ist mir das egal ...

cu, helpy

Verfasst: 10.12.2004 14:08
von Kaeru Gaman
k, thnx 4 info :wink:

dachte halt, das wär etwas spektakulärer...

ADA oder FORTRAN oder sowas