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, 5147 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 ...

Windows Server
Doppelten Dateizugriff auf Windows Server 2008 RC2 verhindern (4)

Frage von Mischmaster zum Thema Windows Server ...

Windows Server
Microsoft EventID 4131 in Textdatei (4)

Frage von andre1988 zum Thema Windows Server ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

Frage von Axel90 zum Thema LAN, WAN, Wireless ...

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...