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

Zeichen in .txt durch batch ersetzen

Frage Entwicklung Batch & Shell

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

06.05.2009, aktualisiert 11:49 Uhr, 10879 Aufrufe, 8 Kommentare, 1 Danke

Hi,

ich habe ich in dem Forum schon etwas umgeschaut, aber ich bin nicht an mein Ziel gekommen.

Ich benötige eine batch-Datei, die mir in einer txt-Datei (z.B. test.txt) nach den Zeichen < > sucht und diese beide Zeichen durch ein Leerzeichen ersetzt.

Ich bin für jede Hilfe dankbar.
Vielen Dank schon mal

Matze
Mitglied: Cavefish1
06.05.2009 um 12:01 Uhr
Möchtest du eine .txt in eine .bat umwandeln oder möchtest du einen Text durchsuchen lassen ?
Bitte warten ..
Mitglied: mabue88
06.05.2009 um 12:02 Uhr
Ich möchte eine bestehende txt-Datei durchsuchen lassen und diese ändern lassen. Die Batch soll dabei diese Aufgaben ausführen.
Bitte warten ..
Mitglied: Biber
06.05.2009 um 12:40 Uhr
Moin mabue88,

dazu wäre ein 5-Zeiler in VBSkript eleganter und angebrachter.

Hatten wir auch schon mehrfach - suche mal nach "ReadAll" in der Forumssuche

Grobe Skizze für eine schnipsel.vbs [absolut ungetestet]
01.
strQuelle = "c:\test\original\DeinText.txt" 
02.
' strZiel = "c:\test\kopie\Deintext.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
strContent = Replace(Replace(fso.OpenTextFile(strQuelle, 1).ReadAll, "<",""), ">","")) 
06.
 
07.
WScript.echo strContent 
08.
.... 
09.
' und dann strContent in eine neue (oder alte) Datei schreiben. 
10.
...
Grüße
Biber
Bitte warten ..
Mitglied: Der-Phil
06.05.2009 um 12:54 Uhr
Hi!

Nicht schön, aber einfach:
Nutzer in der Batch-Datei "SED": http://gnuwin32.sourceforge.net/packages/sed.htm

Damit kannst Du richtig einfach Zeichen ersetzen.

Phil
Bitte warten ..
Mitglied: akrupp2
08.05.2009 um 10:56 Uhr
Hi,
damit ist doch die Frage von mabue88, wie man das mit einem Batch-Skript löst, nicht beantwortet, oder?
Ich hab nämlich ein ähnliches Problem:

Ich habe ein Skript geschrieben, welches aus einer Ersetzungsliste den "Suchstring" und den "Ersetzenstring" holt und in einer Datei die entsprechenden Strings sucht und durch einen anderen ersetzt.
Dies alles klappt auch wunderbar -jedenfalls in meiner angelegten Testdatei -. Nun habe ich das Problem, dass in der Eigentlichen Textdatei auch das Zeichen ">" vorkommt, welches zum folgenden Problem führt.
Beispiel:

Ersetzungsliste:
String1|String2
String3|String4

Meine Testdatei sah vorher so aus:
text text etxt text text String1 Test text text bla bla bla
bla blubb blubber bla bla text String3 bla blubb text text
-----------------------------------------------------------´


Nach ausführen des Skriptes sah die Testdatei so aus:
text text etxt text text String2 Test text text bla bla bla
bla blubb blubber bla bla text String4 bla blubb text text
Also zunächst alles schön und gut. Habe mich natürlich gefreut, dass das so gut klappt.
Jetzt ist es aber so, dass die eigentlich Originaldatei beispielsweise so aussieht:
text text etxt text text <String1> Test text text bla bla bla
bla blubb blubber bla bla text <String3> bla blubb text text
Und schon funktioniert das Skript nicht mehr. Stattdessen werden Dateien Namens: "Test" und "bla" angelegt, die als inhalt dn String bis tzu diesem Zeichen festhalten (z.B.: text text etxt text text <String1)
Dummerweise wird das Zeichen ">" beim suchen als falsch interpretiert. Anstatt dieses Zeichen als einfaches Textzeichen zu behandeln, wird es als Befehl, die vorhergehenden Zeichen in die Datei mit dem Namen, der nach dem ">" folgenden Zeichenkette, zu schreiben.

Hat da jemand ne Idee, wie ich es schaffe, dass das ">" als einfaches Textzeichen behandelt wird?
Bitte warten ..
Mitglied: Biber
08.05.2009 um 12:18 Uhr
Moin akrupp2,

Hat da jemand ne Idee, wie ich es schaffe, dass das ">" als einfaches Textzeichen behandelt wird?
Ich würde dieses Zeichen maskieren.

Mit welchem Tool SED versuchst Du es denn gerade und wie werden dort Zeichen maskiert?
Doch vermutlich mit einem "\", oder was sagt die Hilfe?

Grüße
Biber
Bitte warten ..
Mitglied: akrupp2
08.05.2009 um 13:54 Uhr
Ich benutze gar kein Tool. Wird alles mit Batch-Skript Befehlen gelöst.
Ich hab aber jetzt ne Möglichkeit gefunden, wie er das Zeichen nicht als Steuerzeichen verwendet, jedoch habe ich dann an der Stelle die "Anführungszeichen" zu viel.

Wenn ich beim zurückschreiben der geänderten Zeile:

t= temp.tmp
L= 'Die Zeile mit den Ersetzten Werten'

>>"%t%" ECHO "%L%" STATT: >>"%t%" ECHO %L% schreibe, dann geht es.

Das Ergebins ist dann jedoch nicht mehr <String2>, sondern "<String2>"

Soll eigentlich nicht so sein.
Bitte warten ..
Mitglied: akrupp2
08.05.2009 um 16:17 Uhr
Ich bin mittlerweile am überlegen, ob ich das nicht besser mit VB lösen sollte, aber da hab ich auch leider nicht wirklich einen Plan wie. Ich hab in VB auch nur Basics drauf. Prinzipiell wäre es für mich kein Problem so lange zu tüfteln und zu suchen bis ich mir es selbst beigebracht habe, wenn da nicht der Zeitdruck wäre.
Ich versuche mal mein Problem (möglichst verständlich) zu erklären:


HINTERGRUNDINFORMATION
Ich bin auf meiner Arbeit verantwortlich für die Administration sämtlicher Korrespondenzvorlagen. Diese Brief- und Vertragsvorlagen basieren aber nicht auf Word. Wir verwenden dafür ein Korrespondenz-tool namens Thunderhead, welches wie eine Art Content Management System funktioniert.

Die Vorlagen werden über das "Business Content Studio" erstellt. Diese Vorlagen bestehen jedoch nicht nur aus einfachem Text sondern auch aus Datenbankfeldern, sog. manuelle Felder (die bei der Brieferstellung über eine Eingabemaske befüllt werden) und diversen Regeln, die einzelne Textpassagen in Abhängigkeit von den Eingaben steuern.
Nun kam unsere IT auf die Idee Die Datenbanken nicht mehr getrennt für Deutschland und International zu verwalten, sondern nur noch eine globale Datenbank zu verwenden. Dies hat zur Folge, dass die Datenbankfelder nun andere Namen haben.
Für mein Team heißt das nun, dass wir in jedes Template hingehen und die alten Datenbankfelder(bzw. Platzhalter) gegen die nun neuen Felder austauschen müssen. Bei einem Scope von ca. 500 Vorlagen und durchschnittlich 20 Feldern pro Vorlage, wäre das einige Wochen arbeit.
Da die Templates aber auf dem Server in Form von XML-Dateien liegen, kam mir die Idee, dass wir nicht über das Tool arbeiten, sondern direkt in der Rohdatei (XML-Datei), über ein Suchen / Ersetzen Skript die entsprechenden Felder austauschen.

Die XML-Datei sieht in etwa so aus (Ausschnitt):

<?xml version="1.0" ?>
- <!-- generated by Thunderhead.Content, Version=3.0.12.0, Culture=neutral, PublicKeyToken=84c666f5e68a8973
-->
- <docdef version="3.0" bo-name="Human_Resources" bo-class="Th_180000251*_Human_Resources" styleset="190000626">
<script language="JavaScript" />
- <channel channel="2" template="190000624">
<sectionmap section="Letter Block" region="Letter Body" />
<sectionmap section="Page Number" region="Page Number" />
<sectionmap section="Letter Footer" region="Footer" />
<sectionmap section="DB Logo" region="Company Logo" />
<sectionmap section="Adressblock Customer" region="Address Customer" />
<sectionmap section="Adress DB" region="Address DB" />
- <setproperty name="display-width">
<string>210mm</string>
</setproperty>
</channel>
- <section id="2" name="Document" edit-groups="*">
- <section id="57" name="DB Logo">
- <fraglink id="73" resid="190000861">
- <argvalue name="Unternehmen">
<var name="Human_Resources.db_people_Datenfelder.Absenderinformationen.Unternehmen" type="string" />
</argvalue>
- <argvalue name="Region">
<var name="Human_Resources.db_people_Datenfelder.Absenderinformationen.Region" type="string" />
</argvalue>
</fraglink>
</section>


In diesem XML-Ausschnitt befinden sich zwei Datenbankobjekte:

"Human_Resources.db_people_Datenfelder.Absenderinformationen.Unternehmen"
"Human_Resources.db_people_Datenfelder.Absenderinformationen.Region"

Die Durch folgende Datenbankobjekte ausgetauscht werden müssen:

"Applications_type.db_people_gbl_data_fields.Sender_Data.Company_Description"
"Applications_type.db_people_gbl_data_fields.Sender_Data.Region"

Ich habe eine Liste in der die Information gespeichert ist, welches Feld durch welches ausgetauscht werden muss, die in etwa so aussieht:

Human_Resources.db_people_Datenfelder.Absenderinformationen.Unternehmen|Applications_type.db_people_gbl_data_fields.Sender_Data.Company_Description

Wie kann ich das am sinnvollsten lösen? Kann mir da jemand vielleicht helfen?
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Batch & Shell
CMD-Batch hilfe: Dateiname zu txt (2)

Frage von Syscore64 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...