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, 5141 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
Windows 2003 Domäne durch 2016er ersetzen (3)

Frage von Cenion zum Thema Windows Server ...

Batch & Shell
Spoiler in textdatei automatisch über Powershellscript einfügen (5)

Frage von Dr.Byte zum Thema Batch & Shell ...

Batch & Shell
gelöst Textdatei auf den Standarddrucker drucken (3)

Frage von pdiddo zum Thema Batch & Shell ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (22)

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

Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (16)

Frage von FA-jka zum Thema Windows 10 ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...