Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Wie elemeniere von einer FOR-Variablen mit einem XML Tag Inhalt die Leerzeichen?

Frage Entwicklung Batch & Shell

Mitglied: sandi81

sandi81 (Level 1) - Jetzt verbinden

20.01.2010, aktualisiert 16:36 Uhr, 3151 Aufrufe, 3 Kommentare

Hallo!
Ich habe folgendes Problemen:

Habe ein Batch-Script mit welchem ich eine XML-Datei auslese.

Sinn des Ganzen ist es, einen neuen XML-Tag in die XML-Datei hinzuzufügen.

Gut, die Vorgangsweise wäre diese:

1) Einlesen der vorhandenen XML-Datei
2) Ausgabe der eingelesenen Werte + des neuen Tags in eine Temporäre XML-Datei
3) Originale XML Datei löschen
4) Neue originale XML-Datei anlegen und mit Daten aus der Temp-Datei füllen
5) Temp-Datei löschen - fertig.

An und für sich funktioniert das auch ohne Probleme - leider nur beim ersten Mal

Denn es werden nach jedem Überschreiben am letzten Tag der XML-Datei Leerzeichen hinzugefügt, und das endet dann ab dem nochmaligen aufruf des Scripts darin, dass der neu hinzufügende Tag nicht mehr mitgegeben wird aber seht selbst:

01.
.... 
02.
:ModifyXML   
03.
ECHO Read %file% and create temp file >> c:\acm.log 
04.
FOR /f "delims=;" %%f IN (%file%) DO ( 
05.
 
06.
  IF "%%f" == "</projects>" ( 
07.
	ECHO ^<project name^="%xml_projectname%" type^="%xml_type%" config^="%xml_projectconfig%" app_pool^="%xml_apppool%" backupDays^="%xml_budays%" web_name^="%xml_webname%" /^> >> tmp_%file% 
08.
  )  
09.
  ECHO %%f >> tmp_%file% 
10.
11.
...
Das problem ist die If-Bedingung, besser gesagt die Variable %%f.

zum Schluss steht eben in dieser Variablen der Wert </projects> aber mit ein paar Leerzeichen folgend.

So was ich bis jetzt herausgefunden habe, gibt es leider keinen direkten Weg einfach die Leerzeichen am Ende der %%f Variablen zu elemenieren
Auch dass ich einfach die ersten 11 Zeichen von %%f nehme geht zumindest nach meiner Info nicht .. da ich ja %var:~11% nicht machen kann

Das Aufrufen eine Funktion mittel Call und dann den jeweiligen Wert übergeben, bringt auch Probleme, da der Wert der Variabeln eben </projects> und "<>" dann Probleme bereitet

Also, für Lösungsvorschläge wäre ich sehr dankbar!

LG
sandi81

[Edit Biber] Codefragment in Codefragment-Tags gesetzt. [/Edit]
Mitglied: rubberman
20.01.2010 um 16:37 Uhr
Hallo sandi81,

wenn der Rest funktioniert, ist die Lösung einfach. Die Blanks vor > oder >> werden mit in die Datei übernommen. Also einfach entfernen. Alternativ kannst du die umgekehrte Schreibweise verwenden, á la
01.
>>tmp_%file% ECHO %%f
Grüße
rubberman
Bitte warten ..
Mitglied: Biber
20.01.2010 um 16:48 Uhr
Moin sandi81,

willkommen im Forum.
Wenn du Leerzeichen zwischen "Echo derEchotext" und dem Pipe-Symbol ">>" stehen lässt, werden die eben auch mit als "Text" angegesehen. und geECHOed.

Bei dir steht:
01.
 ECHO %%f >> tmp_%file% 
02.
-- == unnötiges Leerzeichen als "_" dargestellt 
03.
 ECHO %%f_>> tmp_%file% 
-----> Streiche das als "_" dargestellte Zeichen.

Wenn du den Batch halt 20x auf eine Textdatei anwendest und jedes mal in jeder Zeile ein unnötiges Leerzeichen beim gewollten Eins-zu-Eins-übertragen hinzukommt, dann hast du ziemlich schnell ein paar Leerzeichen zuviel.

Grüße
Biber
[edit] zu langsam... [/edit]
Bitte warten ..
Mitglied: sandi81
21.01.2010 um 09:50 Uhr
VIELEN DANK!

Hat super geklappt!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Sticky Notes - Autostart unterbinden

Tipp von Pedant zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

Ubuntu
gelöst Wie kann man es tun? Alle Zeilen mit 2 und mehr Leerzeichen entfernen (1)

Frage von takitano zum Thema Ubuntu ...

Batch & Shell
gelöst Verlinkung erstellen Batch Datei mit for Schleife (2)

Frage von rusdav zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

Flatrates
DeutschlandLAN der Telekom - welche internen IPs? (19)

Frage von qualidat zum Thema Flatrates ...