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

Suchen und ersetzen von einer Zeile bzw. Text

Frage Entwicklung Batch & Shell

Mitglied: DrunkenApe

DrunkenApe (Level 1) - Jetzt verbinden

05.12.2009 um 10:23 Uhr, 7340 Aufrufe, 13 Kommentare

Ich bin derzeit an meiner Projektarbeit tätig und wollte zur Auswertung meiner xxBasteln.txt Datei einige Werte änder lassen und dann wieder einlesen lassen.

Hallo zusammen,

ich habe folgendes Problem:

ich habe mir eine batch Datei geschrieben, welche folgenden Namen hat: xxBasteln.bat. Folgende Befehle zum suchen und ersetzen sind in dieser Datei:

@echo off & setlocal enabledelayedexpansion
set "Datei=xxBasteln.txt"
set "Von=vx=+00"
set "Nach=vx=+20"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & echo !Line!>>"%t%"
move "%t%" "%Datei%"

Das suchen und ersetzen an sich verläuft auch optimal leider interpretiert er das = von vx=+00 schon als ausführparamerter für den ersetzen Befehl.

Die xxBasteln.txt sieht so aus: vx=+00

Nach dem suchen ersetzten sollte: vx=+20 da stehen.

Allerdings steht dann: +00=vx=+20=+00

Kann mir jemand helfen oder en tipp geben wie ich diese Problem lösen kann???

Grüße
DrunkenApe (Georg)
Mitglied: bastla
05.12.2009 um 12:56 Uhr
Hallo DrunkenApe und willkommen im Forum!

Wenn in CMD ein Zeichen mit besonderer Bedeutung (hier eben "=") als "gewöhnlicher" Text behandelt werden soll, muss dieses per "^" maskiert werden - daher:
01.
set "Von=vx^=+00" 
02.
set "Nach=vx^=+20"
Grüße
bastla
Bitte warten ..
Mitglied: it-frosch
05.12.2009 um 13:24 Uhr
Hallo Georg,

unter Linux würdest du das Problem so lösen können

sed 's/vx=+00/vx=+20/g' c:\xxBasteln.txt > c:\xxBasteln_neu.txt

Du könntest dein Windows PC mit einer Linux CD (Knoppix) starten und dann an der Befehlszeile den Befehl ausführen.

Grüße vom IT-Frosch
Bitte warten ..
Mitglied: bastla
05.12.2009 um 13:33 Uhr
@it-frosch
Abgesehen davon, dass es "sed" auch für Windows gibt: Wenn DrunkenApe keine automatisierte Lösung bräuchte, würde auch ein Editor reichen ...

Grüße
bastla
Bitte warten ..
Mitglied: DrunkenApe
05.12.2009 um 14:31 Uhr
Hallo zusammen,

danke für die schnellen Antworten. Das mit dem "^" habe ich ausprobiert geht aber leider nicht da er es als suchoption ansieht, in der *.txt wird also leider dann gar nix geändert.

Mit dem sed Befehl geht es allerdings musste ich ein Add-On installieren, was den Nachteil hat, dass es wenn ich das File meinem Prof gebe nicht mehr funktioniert, bzw. mein Prof es auch installieren muss.

Die Lösung mit dem editor geht leider nicht muss automatisiert sein, da ich das Programm aus MatLab heraus starte dieses öffnet Ansys führt über Ansys eine Berechnung aus, diese Berechnung werden dann verarbeitet und sollen dann wieder in MatLab zur Analyse eingelesen werden.

Gibt es also noch eine Lösung ohne dass ich etwas zusätzlich installieren muss?

Grüße
DrunkenApe (Georg)
Bitte warten ..
Mitglied: it-frosch
05.12.2009 um 16:32 Uhr
Hallo Georg,

wenn dir meine Antwort auch nicht helfen konnte so habe ich jetzt eine Weile gesucht und nur das

http://www.wer-weiss-was.de/theme9/article799367.html

gefunden.

Schau mal ob es dir hilft.

Viel Erfolg noch.
Bitte warten ..
Mitglied: TsukiSan
05.12.2009 um 16:48 Uhr
Hallo DrunkenApe,

hilft dir das in VBS eventuell weiter?
01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
Set Basteln = FSO.OpenTextFile("C:\basteln.txt", 1) 
03.
BastelnNeu = Basteln.ReadAll 
04.
Basteln.Close 
05.
BastelnNeu = Replace (BastelnNeu, "vx=+00" , "vx=+20") 
06.
Set Basteln = FSO.CreateTextFile("C:\basteln.txt", True) 
07.
Basteln.WriteLine (BastelnNeu) 
08.
Basteln.Close
Gruss
Tsuki
Bitte warten ..
Mitglied: TsukiSan
05.12.2009 um 16:58 Uhr
Welche der Lösungen, war denn nun die richtige?
Darf man das eventuell - im Zuge der Adventszeit - erfahren?
Bitte warten ..
Mitglied: DrunkenApe
05.12.2009 um 17:08 Uhr
Hallo,

hab mich nun für die Lösung mit dem sed Befehl entschieden da es eine kleine zusatzdatei von 2mb nur benötigt und ich denk des kann ich meinem prof zumuten.

Ich danke allen nochmals für die zahlreiche und schnelle Hilfe!

Grüße
DrunkenApe (Georg)
Bitte warten ..
Mitglied: Biber
05.12.2009 um 17:39 Uhr
Moin DrunkenApe,

jetzt hast du schon ein, zwei Lösungen in der Hinterhand.

Also könntest du doch jetzt, weil du eigentlich deinem Prof zeigen sollst, dass du eine eigene Lösung umsetzen kannst, folgendes versuchen:

  • und zwar nur mit Batch- und vorhandenen Befehlen (ohne SED und ohne VBS)
  • aufbauend auf deinem geposteten Ansatz ganz oben
  • das SUCHEN auf "vx=+00" durchzuführen
  • aber das ERSETZEN dann nur noch von "+00" auf "+20" einzuschränken.

Dann hast du das Ausnahme-Problem (Sonderfall Gleichheitszeichen im der benötigten Syntax enthalten) doch umgangen.

Grüße
Biber
Bitte warten ..
Mitglied: DrunkenApe
05.12.2009 um 18:20 Uhr
Hallo Biber,

das Problem ist dabei nur, dass ich mehrer Werte noch in der *.txt stehen hab die mit +00 oder +20 definiert sind, diese würden dann alle umgeschrieben werden. Er sucht ja mit dem oben geposteten Ansatz nur nach vx weil er dass = ja schon als Umsetzungsparameter interpretiert.

Grüße
DrunkenApe
Bitte warten ..
Mitglied: bastla
05.12.2009 um 18:35 Uhr
@Tsuki
Kurzer Hinweis: Wenn Du in Zeile 7 "WriteLine" verwendest, enthält die Datei nach dem Umbenennen eine zusätzliche Zeilenschaltung am Ende ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
05.12.2009 um 19:09 Uhr
Hallo DrunkenApe!

Soferne sich nicht in der selben Zeile wie jener mit dem String "vx=+00" ein anderes "+00" befindet, ist Bibers Vorschlag mit Batch umsetzbar ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
06.12.2009 um 04:39 Uhr
@bastla,

danke, aber das war mir bewusst. Mir ging es nur um einen prinzipiellen, anderen Loesungsweg.

Aber der TO hat's ja schon als geloest markiert und sich fuer die "sed" Methode entschieden.
Wenn es jemand interessiert, wie man die letzte Zeile mit dem VBS-Dinges nicht bekommt, kann er ja fragen

Einen schoenen 2ten Advent uns allen!

Tsuki
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Suchen, Ersetzen und Entfernen von Dateiinhalten auf Textbasis (1)

Frage von DanteManor zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

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

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...