Frage zu Batch mit FOR - Befehl

mexxwel

Enthusiast
Thread Starter
Mitglied seit
11.09.2009
Beiträge
199
Hey!

Möchte gerne ein .bat Datei schreiben. Darin vorkommen soll eine Schleife, in der ein Verzeichnis (ca. 200 XML-Dateien) transformiert werden sollen. Für diese XSLT habe ich schon ein Stylesheet entworfen.

Wenn ich folgende .bat ausführe geht das Kommandozeilenfenster nur kurz auf und schließt sich wieder:

for %%x In (C:\Dokumente und Einstellungen\[...]K5-0264.xml*) Do transform.exe C:\Dokumente und Einstellungen\[...]transform.xml C:\Dokumente und Einstellungen\[...]batch File Zielverzeichnis %%x

PS:die transform.exe ist eine Datei aus dem Ordner des XSLT - Parser (Saxon) --> muss hierfür auch der Pfad angegeben werden?

Über Vorschläge würde ich mich sehr freuen

mfg Mexxwel
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
ja, den pfad der transform.exe must du auch mit angeben.
du must auch überall in der for schleife die pfade in " " setzen.

kannst du mal ein funktionierendes beispiel schreiben wie du ohne eine for schleife die transform.exe für nur eine xml datei benutzt. steige da nicht ganz durch .
wofür ist die transform.xml ?

wofür ist das batch File Zielverzeichnis ?

in was werden die xml dateien umgewandelt?
 
Zuletzt bearbeitet:
ja, den pfad der transform.exe must du auch mit angeben.
du must auch überall in der for schleife die pfade in " " setzen.

kannst du mal ein funktionierendes beispiel schreiben wie du ohne eine for schleife die transform.exe für nur eine xml datei benutzt. steige da nicht ganz durch .
wofür ist die transform.xml ?

wofür ist das batch File Zielverzeichnis ?

in was werden die xml dateien umgewandelt?

um eine XSLT durchzuführen benötigt man ja ein Stylesheet (in diesem Falle -->"Final_Transform.xml"). Das Stylesheet enthält die Regeln nach denen die XML's geändert werden sollen. Genauer, sollen nur einige String geändert werden. Damit ich dies nicht einzeln bei 200 Dateien machen muss, versuch ichs daher mit dem FOR Befehl über Batch.

das "batch File Zielverzeichnis" ist der Ordner in dem die Outputdateien abgespeichert werden sollen.

Die XML's werden nicht in ein anderes Format umgewandelt, sondern nur geändert.



Also jetzt sieht es so aus:

for %%x In ("C:\Dokumente und Einstellungen\[...]K5-0264.xml"*) Do transform.exe ("C:\Program Files\Saxonica\SaxonHE9.4N\bin") "C:\Dokumente und Einstellungen\[...]transform.xml" "C:\Dokumente und Einstellungen\[...]batch File Zielverzeichnis" %%x


Zur Erklärung nochmal einzeln:

for %%x In (1)("C:\Dokumente und Einstellungen\[...]K5-0264.xml"*) Do transform.exe (2)("C:\Program Files\Saxonica\SaxonHE9.4N\bin") (3)"C:\Dokumente und Einstellungen\[...]transform.xml" (4)"C:\Dokumente und Einstellungen\[...]batch File Zielverzeichnis" %%x

(1) = Pfad zur Zieldatei (in diesem Beispiel wirklich nur eine Datei)
(2) = Pfad zum Parser
(3) = Pfad zum Stylesheet
(4) = Pfad zum Zielverzeichnis der Outputdateien
geht also immernoch nicht .... freue mich über alles was helfen könnte!
 
Zuletzt bearbeitet:
für alle xml dateien in dem ordner würd ich folgendes schreiben.

for %%x In ("C:\Dokumente und Einstellungen\[...]\*.xml") Do "C:\Program Files\Saxonica\SaxonHE9.4N\bin\transform.exe" "C:\Dokumente und Einstellungen\[...]transform.xml" "C:\Dokumente und Einstellungen\[...]batch File Zielverzeichnis" "%%x"


zum testen für nur eine xml datei folgendes:

for %%x In ("C:\Dokumente und Einstellungen\[...]\K5-0264.xml") Do "C:\Program Files\Saxonica\SaxonHE9.4N\bin\transform.exe" "C:\Dokumente und Einstellungen\[...]transform.xml" "C:\Dokumente und Einstellungen\[...]batch File Zielverzeichnis" %%x

beachte am ende des befehls sind bei %%x keine ""
 
Zuletzt bearbeitet:
ok werds mal versuchen. das "C:\Dokumente und Einstellungen\[...]K5-0264.xml*" ist der Pfad zu ner einzelnen Datei. Die eckigen Klammern habe ich nur etwas ungünstig mitten in den Dateinamen gepackt

---------- Post added at 14:03 ---------- Previous post was at 13:35 ----------

ok also es klappt immer noch nicht. fenster bleibt länger offen und scheint zu arbeiten... ein ergebnis ist aber nirgends zu finden

hier nochmal mein aktueller .bat:

for %%x In ("C:\[...]\*.xml") Do "C:\[...]\transform.exe" "C:\[...]\Final_transform.xml" ("C:\[...]\batch File") %%x


kann es vlt. Probleme wegen Klammern geben? d.h. das irgendwo noch eine hinmuss?
 
die klammern [...] dürfen garnicht da sein, du must den kompletten pfad reinschreiben.dafür brauchst nur zb. mit der shifttaste und rechter maustaste auf eine date/ordner klicken und auf "als pfad kopieren" klicken.
dannach kannst du in deiner batch mit rechter maustaste auf einfügen klicken.
 
Zuletzt bearbeitet:
die klammern [...] dürfen garnicht da sein, du must den kompletten pfad reinschreiben. dafür brauchst nur zb. mit der shifttaste und rechter maustaste auf eine date/ordner klicken und auf "als pfad kopieren" klicken.
dannach kannst du in deiner batch mit rechter maustaste auf einfügen klicken.

jup weiß ich habe ich auch so gemacht. Den Ausdruck [...] habe ich nur eingefügt, damit das ganze kürzer ist und hier nicht soviel Platz benötigt
 
fügt doch mal den pause befehl am ende deiner batch ein. dann kann man eventuelle fehlermeldungen sehen.

denke der fehler liegt hier ("C:\[...]\batch File")
das sollte ohne klammern sein glaub ich. ich benutze transform.exe selber nicht, deshalb keine ahnung.
 
Zuletzt bearbeitet:
pause Befehl würde dann wie aussehen?

PS: an der Klammer lags auch nicht habs geändert... kein unterschied.
 
Zuletzt bearbeitet:
einfach in der letzten zeile deiner batch das wort pause reinschreiben.
 
ja also wie gesagt bleibt beim alten.... scheint zu arbeiten aber ein ergebnis kommt dabei nicht rum....:mad: trotzdem danke für deine vorschläge
 
also ich habe jetzt alle Dateien in ein Verzeichnis gepackt und die Batch Datei sieht nun so aus:

for %%x In (*File.xml) Do "transform.exe" -xsl:"Final_Transform.xml" -o:"File.xml" %%x

das funktioniert auch wunderbar....nur eben immer nur mit einer Datei. Wie bekomme ich es also hin alle Dateien zu transformieren und automatisch an gleicher Stelle zu ersetzen? Also was muss bei -o:"..." hin?

mfg
 
for %%x In ("*.xml") Do "transform.exe" -s:"%%x" -xsl:"Final_Transform.xml" -o:"%%x"
 
Super klappt jetzt!

Tausend dank

das -o:"%%x" war ausschlaggebend
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh