bacaaardi
Goto Top

xml per batch automatisch absenden?

Hi,

ich versuche ein bat anzulegen klappt aber irgendwie nicht.

Wir haben ein Tool welches xml an ein System schickt. Dazu muss ich in die Kommandozeile (cmd) und jede einzelne xml aufrufen damit diese ans System geschickt wird. Ich möchte aber dass jede xml in meinem Ordner nacheinander abgeschickt wird.

Um eine xml abzuschicken muss in der dos-box (cmd) in folgendes Verzeichnis gehen

J:\Tool\Test\xmltool

Dort muss ich dann folgenden Eintrag machen um eine xml abzuschicken (hier das Beispiel für die anfrage1.xml:

java – jar xmltool.jar testmaschine002 allexml/anfrage1.xml


in meinem ordner allexml sind aber 250 xml enthalten. Jetzt müsste ich für jede xml die aufgeführte Eingabe vornehmen? Kann man das automatisieren???

Allerdings gibt es noch einen Haken. Das Testool legt die Antwort einer Anfrage in den gleichen Ordner wo die Anfragen liegen (allexml). Wenn mein Batch jetzt läuft sollen die Antworten nicht ans System schicken. Man kann die Antwort xml am Dateinamen erkennen. Und zwar lauten die letzten Zeichen des Dateinamens „???????out.xml“
D.h. die letzten 7 Zeichen lauten immer „out.xml“ mit einer verschiedenen anzahl von Zeichen davor. Diese sollen von der Batch Datei nicht berücksichtigt werden.

Jemand eine Idee???

Content-ID: 117028

Url: https://administrator.de/contentid/117028

Ausgedruckt am: 15.11.2024 um 01:11 Uhr

77559
77559 28.05.2009 um 14:52:47 Uhr
Goto Top
Zitat von @Bacaaardi:
Hi,

ich versuche ein bat anzulegen klappt aber irgendwie nicht.
...
Jemand eine Idee???

Ja, versuche mal fehlende Wörter wie "hat" zu ergänzen und die Taste ? nur EINMAL kurz zu drücken.
Ausserdem fehlt in deinen Sätzen das Komma.
for /f "delims=" %A in ('dir /B/S allexm\*.xml^|findstr /V /I "out.xml$"' ') Do @echo java – jar xmltool.jar testmaschine002  %~fA  
Wenn die Ausgabe korrekt erscheint, das Echo hinter dem Do entfernen.
In einer Batchdatei sind die %-Zeichen zu verdoppeln (ungetestet)

Gruß
LotPings
Bacaaardi
Bacaaardi 28.05.2009 um 14:58:07 Uhr
Goto Top
Hi,

habe eine start.bat erstellt und deinen Quellcode eingefügt.
Leider passiert nichts. Die DOS-Box öffnet sich für paar ms und ist dann weg.

Sorry wegen den fehlenden Kommas.

Gruß

Bacaaardi
77559
77559 28.05.2009 um 15:09:50 Uhr
Goto Top
Der Befehl ist ja auch auf die Eingabe in einem Cmd Fenster im Ordner J:\Tool\Test\xmltool ausgelegt.

Wenn du das alles von einer Batch aus machen willst, musst du die Befehle halt ergänzen.

@echo off&Setlocal
Set "DatumZeit=%date:~-4%-%date:~-7,2%-%date:~-10,2%_%time:~0,8%"  
Set "DatumZeit=%DatumZeit::=-%"  
echo Wenn DatumZeit=%DatumZeit% nicht ok Strg-C zum Abbrechen, sonst
Pause
Echo ====== %DatumZeit% ====== >>"%~dpn0.Log"  
pushd J:\Tool\Test\xmltool 
for /f "delims=" %%A in ('  
  dir /B/S allexml\*.xml^|findstr /V /I "out.xml$" '  
) Do (
  java -jar xmltool.jar testumgebung002  "%%~fA"  
  echo "%%~fA" bearbeitet >>"%~dpn0.Log"  
)
Set "ArchivDZ=J:\xmltool\Testergebnisse\%DatumZeit%\"  
if Not exist "%ArchivDZ%" MD "%ArchivDZ%"  
Move "allexml\*out.xml" "%ArchivDZ%"  
Pause
Popd

Gruß
LotPings

Edit: Log eingebaut
Edit2: Umfangreiche Änderungen
Edit3: Pfad geändert
Edit4: MS entfernt
Bacaaardi
Bacaaardi 29.05.2009 um 08:27:09 Uhr
Goto Top
Hi Lotpings,

ich habe im Ordner J:\Tool\Test\xmltool eine start.bat mit deinem Code eingefügt.

Wenn ich das bat ausführe dann listet er die xml in der DOS-Box auf. Geht 2 bis 3 Sekunden.
Die Anfragen werden aber nicht an das System geschickt gebe ich nur eine xml wieder händisch an braucht allein eine Antwort mehrere Sekunden.

Ich weiss jetzt nicht was deine Batch macht, aber die Anfragen werden nicht so verarbeitet wie gewünscht.

Eine Idee???
77559
77559 29.05.2009 um 09:34:47 Uhr
Goto Top
Zitat von @Bacaaardi:

Wenn ich das bat ausführe dann listet er die xml in der DOS-Box auf. Geht 2 bis 3 Sekunden. Die Anfragen werden aber nicht an das System geschickt gebe ich nur > eine xml wieder händisch an braucht allein eine Antwort mehrere Sekunden.
Ich weiss jetzt nicht was deine Batch macht, aber die Anfragen werden nicht so verarbeitet wie gewünscht.

Mon,
wie wäre es mit LESEN,
es werden zur Kontrolle nur die Befehle ANGEZEIGT, ich schrieb doch schon einmal:
Wenn die Ausgabe korrekt erscheint, das Echo hinter dem Do entfernen.
Und zwar nur das Wort Echo

Gruß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 10:16:56 Uhr
Goto Top
Hi LotPings

Habe nur das Wort Echo gelöscht. Das @ nach dem DO hab ich stehen gelassen.
Siehe da es geht. Allerdings schickt er mir nicht alle Dateien aus dem Ordner.
Von 75 xml wurden nur 17 abgeschickt. Ist da eine Begrenzung drin?

Sorry wenn ich so anfängerhaft frage. Bin leider kein Batch-Profi

Danke aber für deine Mühe.

Was mir aufgefallen ist: Die xml die abgeschickt werden haben eine Nummer.
z.B.:

109.request.xml
110.request.xml
1010.request.xml
1022.request.xml

usw.

Mit deinem Batch wurden alle xml die mit einer 1 beginnen verarbeitet. Die übrigen nicht.
z.B.
808.request.xml
200.request.xml


usw
77559
77559 29.05.2009 um 10:51:44 Uhr
Goto Top
Ich kann da keinen Gund erkennen warum er nur Dateien die mit 1 beginnen verarbeiten sollte, es sei den das ist beim übertragen reingerutscht.

Das Codefenster hat oben einen klickbaren Quelltext Hinweis. Am Besten dieses Quelltextfenster öffnen und von dort mit Strg-A Strg-C alles kopieren.

Ich habe oben eine Änderung eingebaut die jetzt in eine Log-Datei schreibt mit gleichem Namen und Ordner wie die Batchdatei aber mit der Erweiterung ".Log".
Probiere es einfach mal mit dieser neuen Version.

Gruß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 11:05:13 Uhr
Goto Top
Also so hat es jetzt doch geklappt:

@echo off
pushd J:\Tool\Test\xmltool 
for /f "delims=" %%A in ('dir /B/S allexml\*.xml^|findstr /V /I "out.xml$"' ') Do @ java -jar xmltool.jar testumgebung002  %%~fA  
Pause
Popd

Hat also prima geklappt vielen Dank an alle. Habt mir echt weitergeholfen.

Eine Frage noch:

ist es möglich alle ????out.xml Dateien zu archivieren. D.h. nach dem ich die Anfragen alle durch habe sollen die Dateien bei denen die letzten 7 Zeichen out.xml lauten in einen seperaten Ordner zu kopieren?
Es soll ein Ordner mit Zeistempel erstellt werden (YYYY-MM-DD HH:MM:SS) in den die out.xml Dateien aus dem allexml Ordner ausgeschnitten und dann in den erstelleten Ordner mit Zeitstempel kopiert werden.

Pfad für die Archivierung:
J:\xmltool\Testergebnisse.

Beipsiel dann:

J:\xmltool\Testergebnisse\2009-05-29 11:05:12
77559
77559 29.05.2009 um 11:39:36 Uhr
Goto Top
Zitat von @Bacaaardi:
Eine Frage noch:

ist es möglich alle ????out.xml Dateien zu archivieren. D.h. nach dem ich die Anfragen alle durch habe sollen die Dateien bei denen die letzten 7 Zeichen out.xml lauten in einen seperaten Ordner zu
kopieren?
Natürlich, ausschneiden einfügen ist aber ein GUI Metapher, den Move Befehl gibt es schon viel länger.

Es soll ein Ordner mit Zeistempel erstellt werden (YYYY-MM-DD HH:MM:SS) in den die out.xml Dateien aus dem allexml Ordner ausgeschnitten und dann in den erstelleten Ordner mit Zeitstempel kopiert werden.
Mit dem Doppelpunkt geht das garnicht, der ist für Laufwerke reserviert.

Pfad für die Archivierung: J:\xmltool\Testergebnisse.
Beipsiel dann: J:\xmltool\Testergebnisse\2009-05-29 11:05:12
Das ist die am häufigsten gestellte Frage und es gibt hunderte von Beispielen dafür.
Da das Datum Format über die Systemsteuerung individuell eingestellt werden kann gibt es universelle Lösungen mit vbscript, 3rdparty Tools und auch komplexe Batchdateien.
Es gibt die Variablen %Date% und %Time% die das voreingestellte Format ausgeben.
Man kann aber durch Ummstellungen dein gewünschtes Format einfach erzielen.
Von tt.mm.jjj ausgehend habe ich das alles wieder oben eingebaut.

Gruß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 11:57:34 Uhr
Goto Top
Hi,

also beim Start des Batchs fragt er mich ob die Uhrzeit bzw. Datum ok ist. Nach drücken einer Taste werden alle anfragen korrekt abgeschickt.
Leider klappt der Move nicht. Auch der Ordner mit Zeitstempel wird nicht erstellt. Sehe aber keine Fehlermeldung

Gruß
77559
77559 29.05.2009 um 12:12:30 Uhr
Goto Top
Zitat von @Bacaaardi:
Hi,

also beim Start des Batchs fragt er mich ob die Uhrzeit bzw. Datum ok ist. Nach drücken einer Taste werden alle anfragen korrekt abgeschickt.
Leider klappt der Move nicht. Auch der Ordner mit Zeitstempel wird nicht erstellt. Sehe aber keine Fehlermeldung

Ich baue nochmal eine Änderung ein, allexml fehlte.
Poste bitte mal das genaue Datum das angezeigt wird.
Ichbaue am Ende auch die Pause nochmal ein. (Wenn alles klappt kann man die auskommentieren mit zwei Doppelpunkten davor oder eicfach löschen.

Guß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 12:35:54 Uhr
Goto Top
Der Befehl "MD"J:\xmltool\Testergebnisse\2009-05-29_
12-33-48,38\"" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Mehrere Dateien können nicht in eine einzelne Datei verschoben werden.
Drücken Sie eine beliebige Taste . . .


Wenn die Sekunden das Problem sind reicht dann aich HH:MM
Wenn es dadurch einfacher ist
77559
77559 29.05.2009 um 13:51:03 Uhr
Goto Top
Zitat von @Bacaaardi:
Der Befehl "MD"J:\xmltool\Testergebnisse\2009-05-29_12-33-48,38\""
Wenn die Sekunden das Problem sind reicht dann aich HH:MM
Wenn es dadurch einfacher ist

Es sind die Sekundenbruchteile, heute ist Freitag.......
ändere es wieder oben.

Gruß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 14:03:08 Uhr
Goto Top
Sorry gleiche Fehlermeldung :

<!-- done processing all request -->
Der Befehl "MD"J:\xmltool\Testergebnisse\2009-05-29_
14-01-22\"" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Das System kann die angegebene Datei nicht finden.
Drücken Sie eine beliebige Taste . . .


Hmmm face-smile
77559
77559 29.05.2009 um 14:42:39 Uhr
Goto Top
Zitat von @Bacaaardi:
Der Befehl "MD"J:\xmltool\Testergebnisse\2009-05-29_14-01-22\"" ist entweder falsch geschrieben oder
Da fehlte ein Leerzeichen hinter MD.

Gruß
LotPings
Bacaaardi
Bacaaardi 29.05.2009 um 15:09:58 Uhr
Goto Top
Einfach genail
Du bist ein Genie ;)
Vielen Dank!!!!!!!!!!!
77559
77559 29.05.2009 um 16:07:25 Uhr
Goto Top
Na prima,
und wenn du den Beitrag jetzt auch auf erledigt setzt, sind wir alle Glücklich.

Gruß
LotPings