Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch für Bereiche aus svg-Files auslesen und einzeln in svg-Files schreiben

Mitglied: GIS2000

GIS2000 (Level 1) - Jetzt verbinden

15.08.2011, aktualisiert 18.10.2012, 3433 Aufrufe, 13 Kommentare

Habe vergebens nach einer Lösung gesucht, aus einer svg-Datei mit mehreren Signaturen - mit einem Batch - pro Signatur ein svg-File zu erstellen.

Ausgangslage:

Beispiel svg-File (Files können bis 100 Signaturen enthalten):

....
</style>
<g id="Rechteck_015">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/>
</g>
<g id="Rechteck_015_gestrichelt">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" stroke-dasharray="6,2" width="33.675" height="20.92"/>
</g>
<g id="Rechteck_015_ausgezogen">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/>
</g>
</svg>

Ziel mittels Batch pro Signatur ein svg-File mit Signatur als Dateiname zu erzeugen:

Dateiname: Rechteck_015.svg
<g id="Rechteck_015">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/>
</g>
</svg>

Dateiname: Rechteck_015_gestrichelt.svg
<g id="Rechteck_015_gestrichelt">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" stroke-dasharray="6,2" width="33.675" height="20.92"/>
</g>
</svg>

Dateiname: Rechteck_015_ausgezogen.svg
<g id="Rechteck_015_ausgezogen">
<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/>
</g>
</svg>

Mit bestem Dank für eure Unterstützung!
Mitglied: Clijsters
15.08.2011, aktualisiert 18.10.2012
Hallo GIS2000,

Leider fehlt uns Folgendes:

  • Ein freundliches "Hallo"
  • Ein freundlicher Gruß
  • Code-Tags, welche die Lesbarkeit des Dateiinhalts verbessern
  • Dein Wille, die Forensuche oder Google zu bemühen.

Du kannst dir gar nicht vorstellen, wie häufig solche Themen hier schon angesprochen wurden.

Zum Beispiel hier, hier, hier, oder hier. Genauso wie hier und hier. Aber auch hier.


Mit bestem Gruß
Dominique
Bitte warten ..
Mitglied: rubberman
15.08.2011 um 02:04 Uhr
Hallo GIS2000, willkommen im Forum.

Da SVG ein XML-basiertes Format ist, ist die Verarbeitung per Batch eher suboptimal. VBScript ist hier besser geeignet, Microsoft stellt mit XML DOM ein ActiveX Object zur Verfügung, mit dessen Hilfe solche Aufgaben recht sinnvoll umzusetzen sind.

Die von dir beschriebenen Outputs sind aber keine gültigen SVG Dateien. Sie entsprechen nicht dem Standard und sind vermutlich auch nicht funktionstüchtig. Bitte noch mal überdenken.

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
15.08.2011 um 02:06 Uhr
... wobei auf Basis des Beispiels oben eine Batchlösung durchaus möglich sein sollte (aber VBS die bessere Wahl bleibt ):
01.
@echo off & setlocal 
02.
set "Datei=test.svg" 
03.
 
04.
set "Schreiben=" 
05.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Zeile=%%i" & call :ProcessLine 
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
echo "%Zeile%"|findstr /c:"<g id=">nul && ( 
10.
    set "Schreiben=true" 
11.
    for /f "tokens=2 delims=>=" %%a in ("%Zeile%") do set "DateiNeu=%%~a.svg" 
12.
13.
if defined Schreiben ( 
14.
    setlocal enabledelayedexpansion 
15.
    echo !Zeile! 
16.
    endlocal 
17.
)>>"%DateiNeu%" 
18.
echo "%Zeile%"|findstr "</g>">nul && ( 
19.
    set "Schreiben=" 
20.
    echo ^</svg^> 
21.
)>>"%DateiNeu%" 
22.
goto :eof
Falls ev die zu erstellenden Dateien zusätzlich als erste Zeile
<svg>
enthalten sollen, die Zeile 11 durch folgende Zeilen ersetzen:
01.
    for /f "tokens=2 delims=>=" %%a in ("%Zeile%") do ( 
02.
        set "DateiNeu=%%~a.svg" 
03.
        >"%%~a.svg" echo ^<svg^> 
04.
    )
Damit würde dann auch gleich dafür gesorgt, dass ev bereits vorhandene Zieldateien überschrieben werden. Das Neu-Erstellen der Zieldateien ließe sich in der ursprünglichen Fassung mit folgender Zeile 11 erreichen:
for /f "tokens=2 delims=>=" %%a in ("%Zeile%") do set "DateiNeu=%%~a.svg" & del "%%~a.svg" 2>nul
Grüße
bastla
Bitte warten ..
Mitglied: bastla
15.08.2011 um 02:10 Uhr
@Dominique01520

Welches der vielen von Dir verlinkten Themen würdest Du denn für diesen Fall vorrangig empfehlen?

Grüße
bastla
Bitte warten ..
Mitglied: Clijsters
15.08.2011, aktualisiert 18.10.2012
@bastla:
Auch, wenn ich diese Frage nicht als ernst gemeinte Frage interpretiere...

...Mal kurz überlegen...

Ich glaube, ich würde dieses empfehlen, da die Datei, wie oben gezeigt immer die selbe Zeilenanzahl in den Signaturen vorweist.
Ein wenig Denken und weiter suchen ist wohl auch ganz sinnvoll, er möchte ja die ID als Namen für die Ausgangsdatei verwenden.
Eine Zeile anhand Ihrer Eigenschaften (z.B. der Beginn: <g id=") zu lokalisieren und zu splitten/zu kürzen stellt kein Hexenwerk da.

Ggf. ist das auch sehr hilfreich. Es beschreibt zumindest, wie er Dateien einliest und den Inhalt einer Zeile prüft.
Hier sollte er den Anfang der Zeile <g id=" überprüfen und damit arbeiten können.

Letztendlich ist keins der Themen eine Fertiglösung. Ein wenig Eigeninitiative ist wohl auch kein schlechter Einsatz.
Trotzdem denke ich, dass GIS2000 mit der Forensuche oder gar Google schon etwas weiter gekommen wäre. Es ist ja nicht so, dass er der Erste ist, der auf die Idee kommt, eine Datei via Script in mehrere Dateien aufzuteilen.


Gruß
Dominique
Bitte warten ..
Mitglied: bastla
15.08.2011, aktualisiert 18.10.2012
@Dominique01520
So unernst war die Frage gar nicht gemeint ...

Natürlich haben wir viele Threads mit ähnlichen Themen - aber wer nicht schon ein gewisses Maß an Scripting-Fähigkeiten mitbringt (und dass dem so wäre, hätte ich dem Eröffnungsposting nicht entnommen) und nur noch Details (wie sie zB diesem relativ aktuellen Beitrag zu entnehmen wären) sucht, wird mit "ein wenig Eigeninitiative" auf Basis der von Dir angebotenen Beispiele vermutlich nicht ganz so weit kommen ...

... was allerdings ein "Hallo" und die Verwendung der "Code"-Formatierung angeht, bin ich bei Dir ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
15.08.2011 um 21:33 Uhr
Hallo Zusammen,

hab mal etwas gebastelt (vielleicht ist es ja für irgendjemand nützlich). Für "test.svg"

*.vbs
01.
Set objXmlDoc = CreateObject("Microsoft.XMLDOM") 
02.
objXmlDoc.async = False 
03.
objXmlDoc.load("test.svg") 
04.
 
05.
Set colNodes = objXMLDoc.documentElement.selectNodes("//g") 
06.
For Each objNode In colNodes 
07.
 
08.
  Set objXmlDoc2 = CreateObject("Microsoft.XMLDOM") 
09.
  objXmlDoc2.async = False 
10.
 
11.
  Set objRoot2 = objXmlDoc2.CreateElement("svg") 
12.
  objRoot2.setAttribute "xmlns", "http://www.w3.org/2000/svg" 
13.
  objRoot2.setAttribute "xmlns:xlink", "http://www.w3.org/1999/xlink" 
14.
  objRoot2.setAttribute "xmlns:ev", "http://www.w3.org/2001/xml-events" 
15.
  objRoot2.setAttribute "version", "1.1" 
16.
  objRoot2.setAttribute "baseProfile", "full" 
17.
  objRoot2.text = vbCrLf & vbTab 
18.
  objXmlDoc2.AppendChild(objRoot2) 
19.
 
20.
  Set objNode2 = objNode.cloneNode(True) 
21.
  objXmlDoc2.documentElement.appendChild(objNode2) 
22.
 
23.
  Set objPI2 = objXmlDoc2.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""") 
24.
  objXmlDoc2.InsertBefore objPI2, objXmlDoc2.ChildNodes(0) 
25.
 
26.
  objXmlDoc2.save(objNode.getAttribute("id") & ".svg") 
27.
  Set objXmlDoc2 = Nothing 
28.
Next 
29.
 
30.
Set objXmlDoc = Nothing
Da mir einige Informationen fehlen, habe ich Processing Instructions und Attributes nach meinem eigenem Gusto festgelegt.

Grüße
rubberman
Bitte warten ..
Mitglied: GIS2000
16.08.2011 um 01:54 Uhr
Hallo zusammen

Möchte mich zuerst bei allen für das Unterlassen der Begrüssung entschuldigen!

Doch nachdem ich bereits seit einiger Zeit mit Google nach einer Lösung gesucht
habe, musste ich erkennen, dass meine Scripting Fähigkeiten zu bescheiden sind
um aus gewissen Teillösungen, das Ganze zusammenzubauen.

Die Batchlösung von bastla konnte ich gut nachvollziehen.

Beim VB-Script von rubberman wirds für mich schwierig.
Beim Ausführen des Scrips bekomme ich in Zeile 5 / Zeichen 1 folgenden Fehler:
Objekt erforderlich: 'objXmlDoc.documentElement' / Code: 800A01A8.


Im Anhang noch der gesamte Code entsprechend dargestellt.

01.
<?xml version="1.0" encoding="iso-8859-1"?> 
02.
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  --> 
03.
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ 
04.
	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/"> 
05.
	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/"> 
06.
	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/"> 
07.
	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/"> 
08.
]> 
09.
<svg version="1.1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" 
10.
	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" 
11.
	 x="0px" y="0px" width="35.186px" height="45.495px" viewBox="0 0 35.186 45.495" enable-background="new 0 0 35.186 45.495" 
12.
	 xml:space="preserve"> 
13.
<style type="text/css"> 
14.
<![CDATA[ 
15.
@font-face{font-family:'Arial';src:url("data:;base64,\ 
16.
T1RUTwADACAAAQAQQ0ZGIF1uwh0AAACwAAAPvkdQT1Or4bwwAAAQcAAAAQhjbWFwAo8CVwAAADwA\ 
17.
AAB0AAAAAQAAAAMAAAAMAAQAaAAAABYAEAADAAYAIABJAE0AVwBaAGIAZABpAHAAdf//AAAAIABB\ 
18.
AEsAUABaAGEAZABnAG0Acv///+H/wf/A/77/vP+2/7X/s/+w/68AAQAAAAAAAAAAAAAAAAAAAAAA\ 
19.
AAAAAAABAAQCAAEBAQhBcmlhbE1UAAEBATv4GwH4GAT4HAwVHPqv/S0cEAAcCAwFHqAASIKBJf+L\ 
20.
ix6gAEiCgSX/i4sMB/dVD/d0EPd2EZMcD7YSAAIBAV5rQXJpYWwgaXMgYSB0cmFkZW1hcmsgb2Yg\ 
21.
VGhlIE1vbm90eXBlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZC9vciBvdGhl\ 
22.
ciBjb3VudHJpZXMuL0ZTVHlwZSA4IGRlZgAAAQABAAAiCAAsAgAxBwA7AABCAQBFAABIAgBOAwBT\ 
23.
AwAAACUCAAEAGwAeAFwBEwG6AjwCWQJzAy8DTQNcA4kDmgPaBDsFFQWhBocGnwcEBzEHlge+CKQJ\ 
24.
IQmkCmEKsArNC1oLsQwyDLwM/A3PDikOhsr3lBYcBQD6lBz7AAf+dKsV+lQcBMD+VAYO/hwOIIgW\ 
25.
+MccBboF92UG+Owc+kYF+3EG+z/4UAX8+Qb7NfxQBfdt+O4V+IUG+y34Klz3D2nxdNoZeC1xLmku\ 
26.
CA4g9yoWHAW6+LoH9wTlfG7PH85twF2yTgixTZ5KSBpMelBpVB5pVFheRmnkcc9fu0wIukyjQTYa\ 
27.
Rn1MblAeblBnXWBrYGtWc0t7CHpKPIMuG/wB+eYV99EG4cmRlrAfvJqxo6StCKStl7a+Grx/tnSw\ 
28.
HnSwaaRgmQiYYECSIhv7uQb+9AT4AQbKt42QpB+4k7CYqZ6pnqSmnq8Inq6VtLoawn26b7Qeb7Nk\ 
29.
p1qcCJtZQ5MuG/vnBg6RHAS0+JYV91ZaYvszQvsOIjgZNyH7FWH7LRv7MvsUq8woHyjLP+hY9w4I\ 
30.
V/cOcfcX9yAa9y2o9xnG9wYexfcF3uL3AMYIxvb3C6j3FRv3J/cPZkDvH+9A0SKy+xv7U14YafZa\ 
31.
2Eq8CLxKOqMpG/sFLXBVQB8/VVZDbDAIbDB8LSoa+xGd+wCwLh6vLsNF2F0IXdjedOQb9wHnqsrW\ 
32.
H9bKvuim9w8IDpH3MhYcBbr4jQf3BuKEfccf33jTaMZY2ErFN7ImCLElnvsI+xca+wN+KHE1HnE1\ 
33.
akRiU2JSX19ba1pqUXNHegh6Rj2DMhv74/dBFffNBuzXlJ3CH8KdtqSsrLm5r8ml2Qik2Jjp9wMa\ 
34.
9y1y9wpZ3h5Y3U7CQ6cIn1c3lfsHG/vIBg4g9zYWHAW6+rj7Qf32/FX5v/tA/b/8h/oY+0EHDvty\ 
35.
9zwWHAW6+nH7Qf2v/Fr5RPtB/UT9LgcO9wz54PjTFfdAB/kBjAX8tAcsPyhSJmUIZCYjeCAb+yT7\ 
36.
F6rJ+wkf+wrIMuRP9wkIT/cJbfcW9yQa9yOp9xnH9xAexvcP4ef3BMcIx/cE9xWp9yYb9et6aeEf\ 
37.
4GjOW7xOvE6wO6Qo+0NbGHXWcMVqtmq2Xa1OpQikTkiYQRsyP35wSh9KcFdnZF9jX2xbdVYIZjB4\ 
38.
KSEa+xei+wG4Mx64M8xK4WAIYOHmduwb392brNsf26vIrbSwCPelBw6R9zgWHAW691b87vmO+O73\ 
39.
Vhz6RvtW+Uf9jv1HBw7+HPdTFhwFuvdWHPpGBw4g9yoWHAW691b9awf5bPlrBfebBvz7/Ob5Fv38\ 
40.
BfuUBvye+Xr7hPt+BfyQBw73KhYcBbr3Vhz68/lm+0EHDvd99ywWHAW697gH9+/+oqsqokOaWxmc\ 
41.
wKXarvL38/qQGPeZHPpG+08cBMsG/D4c+zUF+0MG/DwcBOAFHPsgBw4g9zIWHAW6+L0H7NaGgr4f\ 
42.
03/HdLxqvGmyXKlOCKhOmklCGvsRYyI8NR40PPskYPtjG/wM/OgG+ZUE+A8G9xHkorrAH8C6pczg\ 
43.
Gsh8wGy3Hmy2YqhYmQiUak+PMxv8CwYO9wwcBPX3MRXlTd5e125S+xsYIrEixyLdCE77AfsMbfsX\ 
44.
G/sZ+wyry/sAH/sAyzjlUfcICFD3CG73F/clGvclqPcXxvcLHsb3C97l9wHJCMn3APcNqvcaG/cb\ 
45.
9w5rS/cBH/cBSt4xxPsHCMT7CKf7F/slGvsNefsAZiseZipUN0FECPw/94wV9wRs51zUTQj3BvPE\ 
46.
9zD3ZRr3C3fyY+QeYuRQ0D68CLw9NKMqG/sl+wxaKCwfLChb+yj7WRr7U7r7JuolHiXp9wxY9ycb\ 
47.
0M2YpcgfTrJLp0icCA6R9zUWHAW6+R4H9xfufnHPH89wwV20SAi0SJ9COhojaTNIRB5IRCNd+yF4\ 
48.
vnKyc6ZzxFfASr4995P8Ixj7iAb7VvfFUuNdzma6GWa6a6tunm6ebZhtkgiQdWeNWRv7df0fBvnH\ 
49.
BPg1BuTQlJ69H72dsailtAils5i3uhrQcsRZuB64WDyh+wEb/GQGDiDn+GsV90ublEKfT6tcGapc\ 
50.
vGXObghuztZ83hvVzJahxB/EobWpp7IIprGZtbgauX6zcK4ecK1fqE6iZJo0o/sbrPsbqy2pVahF\ 
51.
sFe4acIIaMF6yM4a1aDQtcwetcvIvNysCKzc5JzuG/cB63po3h/eaMpXuEe4R6M+jjX7Tn0Ygehp\ 
52.
0VK6CLpRNqP7BRv7CTV2YFYfVWBwV04aVp5gsWkesGntaPcyaPcxZ/cAbMZw4GTKWbRPCLROn0Y8\ 
53.
Gj11Ql5GHl5GS1U4ZQhkNy14Ihv7GfsDnrIyHzGyRcVY2VjYcOOI7QgO+3L4pxYcBQ38d/dBHASK\ 
54.
+0H8eRz68wcOkfr0HAW6FfdW/eMG+yd6+wlqNB5qNE9FNFUIVDT7B3D7IRv7HfsFo7o0HzS6TNBm\ 
55.
5Qhm5Hj3D/cvGvnj91b94gf7E5cto08eok60XcVqCGrE0nveG/cj8KvMyB/IzKn3EPdMGg4g+NUW\ 
56.
/MwcBboF92YG+BH+vao2pDugQBmi26Xbqdv4IPq9GPdaBvzSHPpGBQ74YPgyFvwZHAW6BfdbBvdz\ 
57.
/lWjJqAnnCgZsPcxoeWSo/er+nIY934G92b9esD7TLH7QaL7Nhme6KP1qfcM93r6Qhj3Vwb8Jhz6\ 
58.
RgX7Twb7yfrxceh8xYagGXxIfFF+XPvL/vEYDvtytBb3SAf5g/o/wM6+xbu8Gf3G90H6rvtBBv3L\ 
59.
/o0yJAX6PPtBBg750PcXFUhSS2NOdAh0TUl/RBv7CTKoxEwfTMRs0+Qav5e7o7YeoraqrbKlsaW2\ 
60.
n7uYrpTBlNKU9yWc9qDQowiMpIuakhrUer9pqR60XUefMBs2TXxuYx9ibW1WeED7RKMYm9alyLC6\ 
61.
sLnAr9CkCKTQ3JfmG+bUgHbEH8R2tHCma6ZqnWKWWgiRbI5UOxr7hAf7O48hk18ekl6aYaJiCPtQ\ 
62.
Bniwf7eGvQh8+CYVSnApdfsXeEGAV39sfmx+dHd6cgh6cYNubBpbnWOwax5rr8B70RvQyZqqwR/B\ 
63.
qbO0pMAInrSVx9oaDvfBFvs7HAW690j8nwbq1+y79wobzMl+ccYfxXC7ZrFcsFupUaBICKBIlkM+\ 
64.
GvtKXvshMSgeKDH7AFn7Ehv7ESi/9EQfifgqFfsTnC+uUh4uxNdd7Bvaz63QxB/Ez6jx9xsa9x9w\ 
65.
8VTNHs1USKw9GzxHaUdSH1JGbij7FRoO+cwW9xoHIkgoVvsXGzY+orpEH0S6VMxk3whk3nfr9wEa\ 
66.
9Z3rruIeruHAzdK5CLnS2qLiG8vEfnC9H71wtGeqYAj4ovdHHPpGB/10+KYV+xyoJcRIHkjEz2nZ\ 
67.
G9rOq8zCH8LLpu33GBr3JW/2U88ez1NGrTkbO0hqSlYfVUpwJPshGg7xMxX3Q3GSVaBkrHIZarjI\ 
68.
etgb3sycrLgfuKyqupvHlLCQ2Ir3CQguPCld+wkb+yb7BcD0Ox879GP3E/cnGvCd6bDhHrDgwM3R\ 
69.
ugi60N2i6Rv3EfNYJtwf9xT3Ov4qB/s5evsJakYeaUZWVEJjCGNCMXcgG/sTJajEPR89xGXgjvcH\ 
70.
CPcp+RIV+x+nJcJLHkvC0WveG97Qq8vDH8PKp+/3HBr3Fm7tUs0ezVFFrDobO0drSlMfU0pvKvsU\ 
71.
Gg73GxYcBbr3SPyiB+zf9bz3FBvaz3xsxR/FbLVgpFQIpFSXPCMa/TX7SPk1B+V4zWS0HrRkU59E\ 
72.
G1ZZfXBcH1xvaWV3XAh3XIFJOBr82QcO/o73HBwE6xX3Y/dI+2MH+0gc+xUV+rr3SP66Bw73ffcb\ 
73.
Fvq69zX7KQesv7i1wqsIqsLKm9Ib2st7ar4fvWquXqBQCPcQ3/cByfcbG/TcblHEH8RQpzH7DRr9\ 
74.
bftH+TEH04W/gKsef6p2pWyeCJ5sZ5ViG0BNclpaH1pZcjv7ARr8/ftI+UYH23zHbrMes25bn0gb\ 
75.
WF1+cGAfYHBrZHhYCHhYgUEqGvy7Bw73Gxb6uvc2+ysH9wnZ9wXF9ycby8aAdMEfwHSzbKZmpmad\ 
76.
XpZYCJJqjlA4Gv0h+0j5GgfUhMJ9sB59r3KoaKEIoGdhllsbPklzWlQfU1pvL/scGvzYBw7P+KcV\ 
77.
91nC9yX3Aeoe2ub3BLL3Fxv3JvcLWyzoH+grufsY+z0a+x13IGI9HmI8T049YAhgPDZ1Lhv7KfsM\ 
78.
u+owHy/qXfce90ca900W+xypJcZIHkfG1mnlG+TWrc/GH8bPqfP3Hxr3F23vUM8ezk9BrTIbMUBp\ 
79.
SFAfUEhtJfscGg73G/wrFRwFvfc4+x4HssG2tLymCKa8xpjQG+bbdFzQH9BcwEquNgiuNp0tJhr7\ 
80.
AXgqZDQeZDRSSEFdCFxAPXQ5G09VmKRcH1ukZKtssgj8mQd6+jgV+x2nJsJKHkrCzmraG9vQrc/E\ 
81.
H8TOp/T3Ihr3G2/xVM4ezlNIrT4bPkhnRFAfUENtI/sdGg79q/cZFvq69zb7NQe01rK9rqMIo66x\ 
82.
l7UbyMh4ZMofTfs7BaVfX5hfG2Rnf3RsH2xzdGp+YQh3S4FFPxr8wAcO/FXK99EV90anlUSnVLll\ 
83.
GWW4y3jdG97InK2zH7Osn7O4GrR5q2iiHnKbTp8ppPsYrDCoWKRYo2StcbYIcLZ+ur8aupa3obQe\ 
84.
oLOprLCmp6CxnLyaCJm7v5LCG97Vf3PKH8pzuWupYqlioFSWRvtEcxiDwnS1ZaoIqmRVmkUbOFB9\ 
85.
cGgfaHB5a2YadJJ2mngemniie6p+nYTAfONz9xNp5G++dr11smuoYgioYplXThpPelNoVh5oVlhi\ 
86.
SW4IbklAfDgb+x4iqMRDH0LEXeB39wUIDv4c+KT3NRWl+zMFgFhehmMbSliVoGcfZ6BypnytCHys\ 
87.
hNL3ABr49/sY9yD3GPebB/dH9wAF/Af3Sfsg+0n9AQdYjmqSfB6RfJWAmoIIgpmfh6Ybn6WNkKwf\ 
88.
DvnTFvcwB/sMOPsET/siG0xRl6NVH1SjY6lxsHCvebeAwAiErofD2Br5JvdI/OEHLY9Mkmoellyj\ 
89.
ZrBwCHCwuH3BG8G+mae6H7qmrbGfuwieupXQ5hr4zfdI/roHDhwEcxQcBcEVAAAAAQAAAAoAHgAs\ 
90.
AAFERkxUAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABALoABAAAAAkA\ 
91.
HAAmADgAPgBQAFoAaACKAKQAAgAC/48AEv/bAAQAAf+PABL/aAAU/2gAFf+0AAEAAv+PAAQAAf+0\ 
92.
ABL/aAAU/2gAFf9oAAIAAf/bAAL/aAADABL/2wAU/9sAFf/bAAgAAf/bAAL/aAAX/x0AHP+0AB//\ 
93.
HQAh/7QAIv8dACT/tAAGAAL/aAAX/2gAHP/bAB//jwAh/7QAJP+0AAUAAv+0ABf/tAAf/9sAIf/b\ 
94.
ACT/2wABAAkAAQACAAcADAAOABAAEgAUABU=")} 
95.
]]> 
96.
</style> 
97.
<g id="Rechteck_015"> 
98.
	<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/> 
99.
</g> 
100.
<g id="Rechteck_015_gestrichelt"> 
101.
	<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" stroke-dasharray="6,2" width="33.675" height="20.92"/> 
102.
</g> 
103.
<g id="Rechteck_015_ausgezogen"> 
104.
	<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/> 
105.
</g> 
106.
</svg>
Den Batch von bastla habe ich noch in Zeile 18 angepasst, da das Endtag einer
Signatur immer am Zeilenanfang steht.
Die Signaturen können übrigens unterschiedlich viele Zeilen haben.

01.
@echo off & setlocal 
02.
set "Datei=Test.svg" 
03.
 
04.
set "Schreiben=" 
05.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Zeile=%%i" & call :ProcessLine 
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
echo "%Zeile%"|findstr /c:"<g id=">nul && ( 
10.
    set "Schreiben=true" 
11.
    for /f "tokens=2 delims=>=" %%a in ("%Zeile%") do set "DateiNeu=%%~a.svg" 
12.
13.
if defined Schreiben ( 
14.
    setlocal enabledelayedexpansion 
15.
    echo !Zeile! 
16.
    endlocal 
17.
)>>"%DateiNeu%" 
18.
echo "%Zeile%"|findstr /b "</g>">nul && ( 
19.
    set "Schreiben=" 
20.
    echo ^</svg^> 
21.
)>>"%DateiNeu%" 
22.
goto :eof
Nochmals besten Dank für Eure Unterstützung!

Grüße
GIS2000
Bitte warten ..
Mitglied: bastla
16.08.2011 um 08:17 Uhr
Hallo GIS2000!

Interessant - eigentlich dürfte
echo "%Zeile%"|findstr /b "</g>">nul && (
gar nicht funktionieren, da ja am Beginn der zu prüfenden Ausgabe ein Anführungszeichen steht - es sollte dann eher
echo "%Zeile%"|findstr /b """</g>">nul && (
sein ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
16.08.2011 um 18:22 Uhr
Hallo GIS2000,

ein paar Dinge aus dem SVG Standard sind offensichtlich mit DOM unvereinbar, namentlich die DOCTYPE Properties und die Ampersands in Zeile 9. Kein Problem, das lässt sich ignorieren.

01.
Set objXmlDoc = CreateObject("Microsoft.XMLDOM") 
02.
objXmlDoc.async = False 
03.
objXmlDoc.validateOnParse = False 
04.
objXmlDoc.resolveExternals = False 
05.
objXmlDoc.load("test.svg") 
06.
 
07.
Set colNodes = objXMLDoc.documentElement.selectNodes("//g") 
08.
For Each objNode In colNodes 
09.
 
10.
  Set objXmlDoc2 = CreateObject("Microsoft.XMLDOM") 
11.
  objXmlDoc2.async = False 
12.
 
13.
  Set objRoot2 = objXmlDoc2.CreateElement("svg") 
14.
  objRoot2.setAttribute "xmlns", "http://www.w3.org/2000/svg" 
15.
  objRoot2.setAttribute "xmlns:xlink", "http://www.w3.org/1999/xlink" 
16.
  objRoot2.setAttribute "version", "1.1" 
17.
  objRoot2.setAttribute "baseProfile", "full" 
18.
  objRoot2.text = vbCrLf & vbTab 
19.
  objXmlDoc2.AppendChild(objRoot2) 
20.
 
21.
  Set objNode2 = objNode.cloneNode(True) 
22.
  objXmlDoc2.documentElement.appendChild(objNode2) 
23.
 
24.
  Set objPI2 = objXmlDoc2.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""iso-8859-1""") 
25.
  objXmlDoc2.InsertBefore objPI2, objXmlDoc2.ChildNodes(0) 
26.
 
27.
  objXmlDoc2.save(objNode.getAttribute("id") & ".svg") 
28.
  Set objXmlDoc2 = Nothing 
29.
Next 
30.
 
31.
Set objXmlDoc = Nothing
Grüße
rubberman
Bitte warten ..
Mitglied: GIS2000
17.08.2011 um 22:46 Uhr
Hallo zusammen

Habe das überarbeitete VB-Script von rubberman getestet, erhalte jedoch die gleiche Fehlermeldung wie
bei der ersten Version.

Beim Batch von bastla, habe ich festgestellt, dass es Probleme mit Sonderzeichen gibt:

Beispiel 1:
01.
<g id="Test_01"> 
02.
	<rect x="0.76" y="9.097" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.676" height="20.92"/> 
03.
	<polyline fill="none" stroke="#0000FF" points="8.716,24.707 17.569,28.195 17.564,23.757 26.479,26.961 	"/> 
04.
	<g> 
05.
		<defs> 
06.
			 
07.
				<rect id="SVGID_5_" x="20.026" y="23.259" transform="matrix(0.3528 -0.9357 0.9357 0.3528 -7.7187 40.3579)" width="10.579" height="4.999"/> 
08.
		</defs> 
09.
		<clipPath id="SVGID_6_"> 
10.
			<use xlink:href="#SVGID_5_"  overflow="visible"/> 
11.
		</clipPath> 
12.
		<circle clip-path="url(#SVGID_6_)" fill="none" stroke="#0000FF" cx="22.644" cy="25.634" r="2.25"/> 
13.
	</g> 
14.
</g> 
15.
</svg>
Resultat:
01.
<g id="Test_01"> 
02.
	<rect x="0.76" y="9.097" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.676" height="20.92"/> 
03.
	<polyline fill="none" stroke="#0000FF" points="8.716,24.707 17.569,28.195 17.564,23.757 26.479,26.961 	"/> 
04.
	<g> 
05.
		<defs> 
06.
ECHO ist ausgeschaltet (OFF).
Beispiel 2:
01.
<g id="Test_02"> 
02.
	<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/> 
03.
	<text transform="matrix(1 0 0 1 12.0371 17.7793)" fill="#0000FF" font-family="'Arial'" font-size="8">Test</text> 
04.
</g>
Resultat:
01.
<g id="Test_02"> 
02.
	<rect x="0.76" y="9.098" fill="none" stroke="#0000FF" stroke-width="1.5" width="33.675" height="20.92"/>
Gibt es eine Möglickeit, dies zu beheben?

Mit bestem Dank für eure Unterstützung!

Grüße
GIS2000
Bitte warten ..
Mitglied: rubberman
18.08.2011 um 00:10 Uhr
Hallo GIS2000,

das VBScript funktioniert nicht mit Bruchteilen einer SVG Datei. Mit einer vollständigen Datei (wie deinem Beispiel v. 16.08.) habe ich keinerlei Probleme gehabt.
Nachdem ich nun weiß, dass die g-Knoten auch Childknoten mit dem selben Namen haben können, würde ich aber das Script noch etwas anpassen.

01.
Set objXmlDoc = CreateObject("Microsoft.XMLDOM") 
02.
objXmlDoc.async = False 
03.
objXmlDoc.validateOnParse = False 
04.
objXmlDoc.resolveExternals = False 
05.
objXmlDoc.load("test.svg") 
06.
 
07.
Set colNodes = objXMLDoc.documentElement.selectNodes("//g") 
08.
For Each objNode In colNodes 
09.
  If Not StrComp(objNode.parentNode.nodeName, "g", vbTextCompare) = 0 Then 
10.
    Set objXmlDoc2 = CreateObject("Microsoft.XMLDOM") 
11.
    objXmlDoc2.async = False 
12.
   
13.
    Set objRoot2 = objXmlDoc2.CreateElement("svg") 
14.
    objRoot2.setAttribute "xmlns", "http://www.w3.org/2000/svg" 
15.
    objRoot2.setAttribute "xmlns:xlink", "http://www.w3.org/1999/xlink" 
16.
    objRoot2.setAttribute "version", "1.1" 
17.
    objRoot2.setAttribute "baseProfile", "full" 
18.
    objRoot2.text = vbCrLf & vbTab 
19.
    objXmlDoc2.AppendChild(objRoot2) 
20.
   
21.
    Set objNode2 = objNode.cloneNode(True) 
22.
    objXmlDoc2.documentElement.appendChild(objNode2) 
23.
   
24.
    Set objPI2 = objXmlDoc2.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""iso-8859-1""") 
25.
    objXmlDoc2.InsertBefore objPI2, objXmlDoc2.ChildNodes(0) 
26.
   
27.
    objXmlDoc2.save(objNode.getAttribute("id") & ".svg") 
28.
    Set objXmlDoc2 = Nothing 
29.
  End If 
30.
Next 
31.
 
32.
Set objXmlDoc = Nothing
Grüße
rubberman
Bitte warten ..
Mitglied: bastla
18.08.2011 um 15:32 Uhr
Hallo GIS2000!

Bei komplexeren Strukturen (als in Deinem Beispiel ganz oben ) ist Batch nicht mehr das richtige Werkzeug ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch File auslesen und in Registry oder WMI schreiben

gelöst Frage von stefanhansBatch & Shell35 Kommentare

Hallo zusammen Ich habe ein Problem. Mein Arbeitskollege fällt wegen einem schweren Unfall länger aus und ich darf dringende ...

Batch & Shell

Batch File zum Auslesen einer Datei

gelöst Frage von Marcel1989Batch & Shell9 Kommentare

Hallo, Ich scheibe momentan ein Anmeldescript als batch mit dem Aufruf von VBS dateien. Hierfür haben wir bereits gruppen ...

Batch & Shell

BATCH Element aus XML-File auslesen

gelöst Frage von pappkameradBatch & Shell9 Kommentare

Hallo liebe Admins, ich habe schon öfter bei euch vorbeigeschaut und ein immer eine Lösung für meine Problemchen gefunden. ...

Windows Server

AD-User einer AD-Gruppe auslesen und in ein File schreiben

gelöst Frage von EstefaniaWindows Server15 Kommentare

Guten Abend. Ich habe eine Frage an Experten. Suche ein einfaches Script, wo mir AD-User einer von mir ausgewählten ...

Neue Wissensbeiträge
Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 5 StundenHumor (lol)

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Exchange Server

Exchange 2010-2019 Sicherheitslücke durch Regkey löschen schließen

Information von sabines vor 16 StundenExchange Server1 Kommentar

Unter ist eine Lücke im Exchange 2010-2019 beschrieben, die durch das Löschen eines reg keys geschlossen werden kann. In ...

Windows Server
Erneutes Release von WS2019 und Win10 v1809
Tipp von IT-Pro vor 1 TagWindows Server3 Kommentare

Hi, nachdem der Windows Server 2019 und Windows 10 in der Version 1809 aufgrund von verschwinden von Dateien nach ...

CPU, RAM, Mainboards
Spectre Update Tool für ältere PCs
Information von sabines vor 1 TagCPU, RAM, Mainboards6 Kommentare

Mit Hilfe eines Tools wird der betreffende PC permanent von einem USB Stick gestartet, der ein passendes Microcode Update ...

Heiß diskutierte Inhalte
Java
Testautomatisierung
gelöst Frage von WPFORGEJava15 Kommentare

Hallo, nehmen wir an, es gibt eine Webseite mit einer Karte und einem Suchfeld. Nun wird in das Suchfeld ...

Viren und Trojaner
Office365 Trojaner Analyse
Frage von ZeppelinViren und Trojaner12 Kommentare

Liebe Community, ich wende mich an euch, um mehr über den Office365 Trojaner zu erfahren, welcher grade seine Runden ...

Exchange Server
PST Datei enthält weder Betreff noch Absender
gelöst Frage von SSamuelExchange Server10 Kommentare

Hallo zusammen, ich versuche aus einer wiederhergestellten Exchange (SBS2011) .EDB mit dem Programm "Kernel for Exchange von Nucleus" eine ...

Netzwerke
Anfänger in SSL Zertifikat
Frage von Florian961988Netzwerke10 Kommentare

Guten Morgen liebes Forum, ich habe mal Fragen zum Thema SSL zertifikat verlängern/bzw ändern! Aber von vorne wir haben ...