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

Backslash mit maskierten (doppelten) Backslash in Textdatei ersetzen

Frage Entwicklung Batch & Shell

Mitglied: WiSch

WiSch (Level 1) - Jetzt verbinden

11.01.2011, aktualisiert 15:46 Uhr, 5159 Aufrufe, 3 Kommentare

Hallo.

Hier habe ich schon einmal gefragt, wie man Textstellen per Batch-Script in einer Textdatei austauscht.
Das klappt wunderbar... bis auf ein neues Problem:

Aus einem Backslash soll ein maskierter, also doppelter Backslash werden.

Leider macht er aus einem nicht zwei sondern vier!
Erklären könnte ich mir das so:
Es wird der Backslash gefunden und durch zwei ersetzt.
Das nächste gefundene Zeichen ist (jetzt!) ja auch ein Backslash, der wiederrum ersetzt wird... usw.

Als Zwischenlösung habe ich das auch in zwei Schritten/Aufrufen versucht.
Soll heißen, ich habe den Backslash erst durch eine eigene, eindeutige Zeichenkette ersetzt und diese im zweiten Schritt durch den doppelten Backslash... funktioniert allerdings auch nicht?
<KORREKTUR> Die Zwischenlösung hat doch funktioiniert, hatte noch einen anderen Fehler im Script.

Wie kann ich das verhindern?
Leider sind mir zum Zeitpunkt des Austausches die Zeichen vor und/oder nach dem vorhandenen Backslash nicht bekannt, sodass ich diese nicht in mein Suchmuster
mit aufnehmen kann...


Danke für Eure Hilfe,
WiSch
Mitglied: 60730
11.01.2011 um 15:52 Uhr
moin,

sinnvoll wäre es deinen umgebauten Bastla zu kennen...

01.
@echo off & setlocal 
02.
set "Datei=GroupInfo_2.txt" 
03.
 
04.
set R=%temp%\Replace5.vbs 
05.
>%R%  echo F = WScript.Arguments(0) 
06.
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject") 
07.
>>%R% echo T = fso.OpenTextFile(F).ReadAll 
08.
>>%R% echo T = Replace(T, "\", "\\") 
09.
>>%R% echo fso.CreateTextFile(F).Write T  
10.
 
11.
for %%f in ("%Datei%") do cscript //nologo %R% "%%f"
Works as designed....

Gruß
Bitte warten ..
Mitglied: bastla
11.01.2011 um 15:58 Uhr
Hallo WiSch!

Nach dem ursprünglichen Muster funktioniert
01.
@echo off & setlocal 
02.
set "Datei=Datei.txt" 
03.
 
04.
set R=%temp%\ReplaceIt.vbs 
05.
>%R%  echo F = WScript.Arguments(0) 
06.
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject") 
07.
>>%R% echo T = fso.OpenTextFile(F).ReadAll 
08.
>>%R% echo T = Replace(T, "\", "\\") 
09.
>>%R% echo fso.CreateTextFile(F).Write T  
10.
 
11.
cscript //nologo %R% "%Datei%"
bei mir.

Grüße
bastla

[Edit] @T-Mo: Bist Du aber schnell ... [/Edit]
Bitte warten ..
Mitglied: WiSch
11.01.2011 um 16:48 Uhr
Hallo zusammen.

Was auch hilft: AUGEN AUF!

Ich habe genau Eure Lösung als erstes Versucht.
Leider dabei aber übersehen, das ich in meinem Script mehrere Dateien entsprechend anpassen will.
Copy'n'Paste ist dabei ok, aber nur, wenn man auch den Dateinamen dabei anpasst.

Letztlich bin ich aber trotzdem bei meiner Zwischenlösung geblieben, da in der ursprünglichen Datei der einfache und der doppelte Backslash vorkommen kann.
Korrigiert werden soll aber nur der Einfache, weshalb ich beide im ersten Schritt durch einen jeweils eindeutigen Platzhalter und dann im zweiten Schritt beide wieder zum doppelten Backslash ersetze.

Danke für die schnelle Hilfe, ich geh jetzt zum Optiker.

Grüße,
WiSch
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Batch & Shell
gelöst In txt file an bestimmter Position zeichen ersetzen, Ideen ? (7)

Frage von buliwyf zum Thema Batch & Shell ...

Windows Server
Domänencontroller ersetzen ? (7)

Frage von uridium69 zum Thema Windows Server ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Festplatten, SSD, Raid
PC stellt nach dem Bios ab (20)

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

Server-Hardware
Einem Stromausfall entgegen wirken (19)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server-Hardware ...

iOS
16 iPads zentrall verwalten (18)

Frage von simonlohr zum Thema iOS ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...