Batch dateien und stringfunktionen

Fragen zu allen anderen Programmiersprachen.
Norbie
Beiträge: 134
Registriert: 29.08.2004 12:45
Wohnort: Chemnitz
Kontaktdaten:

Batch dateien und stringfunktionen

Beitrag 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
Team100
Beiträge: 104
Registriert: 13.09.2004 22:59

Beitrag 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
Kompliziert kann es jeder lösen, aber das wirklich Geniale ist einfach.....
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Batch dateien und stringfunktionen

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Batch dateien und stringfunktionen

Beitrag von Kaeru Gaman »

helpy hat geschrieben:Anmerkunge: Den Doppel-Doppelpunkt "::" nehme ich für Kommentare!
nur mal aus interesse: aus welcher sprache stammt dieses?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Batch dateien und stringfunktionen

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

k, thnx 4 info :wink:

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

ADA oder FORTRAN oder sowas
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten