Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

Batch - Strings ersetzen (mit Sonderzeichen)

Frage Entwicklung Batch & Shell

Mitglied: kali64

kali64 (Level 1) - Jetzt verbinden

13.08.2010, aktualisiert 15:00 Uhr, 14030 Aufrufe, 13 Kommentare

Batch - Strings ersetzen (mit Sonderzeichen)

Hallo allerseits,

ich möchte per batch eine config-datei öffnen, Strings suchen und an diese dann Werte anhängen.
Das batch läuft auch, nur leider gibt es Probleme mit den Sonderzeichen, die ich einfach nicht bewerkstelligt bekomme.

Hier mein Quelltext:

01.
@echo off & setlocal enabledelayedexpansion  
02.
set "Datei=para.txt"  
03.
set "zuersetzen=printer_name" 
04.
set "ersetzenmit=printer_name = 9966558" 
05.
set "t=%temp%\text.tmp"  
06.
if exist "%t%" del "%t%"  
07.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%zuersetzen%=%ersetzenmit%! & echo !Line! >> "%t%"  
08.
move /y "%t%" "%Datei%"



para.txt:

01.
printer_name = 
Klappt alles wunderbar, nur, dass im Anschluss "printer_name = 9966558=" und nicht "printer_name = 9966558" in der Datei "para.txt" steht.

Wenn ich set "zuersetzen=printer_name = " eingebe, gibt er mir sogar "=printer_name = 9966558=" aus.

Hat zufällig jemand eine Idee?

Vielen Dank schonmal im Vorraus für eure Bemühungen
Mitglied: pieh-ejdsch
13.08.2010 um 15:08 Uhr
moin Kali64,

Du erstzt ja auch (nur) den teil "printer_name" mit "printer_name = 9966558"

da ist ja klar das aus "printer_name =" das " =" dahinter noch übrigbleibt.

demo am Promt:
set a=abc = 
set a=%a:abc=% 
echo %a% 
Ausgabe: 
 =

Gruß Phil
Bitte warten ..
Mitglied: kali64
13.08.2010 um 15:23 Uhr
Hi Phil,

ja, das ist mir bewusst. Das Problem ist nur, dass wenn ich set "zuersetzen=printer_name = " schreibe, dann gibt er mir komischerweise
"=printer_name = 9966558=" in meinem File aus.

Grüße kali
Bitte warten ..
Mitglied: 60730
13.08.2010 um 15:35 Uhr
moin

Zeile 4
set "ersetzenmit=printer_name ^= 9966558"

Dann klappert das auch - obwohl ohne echo off.....

Gruß
Bitte warten ..
Mitglied: bastla
13.08.2010 um 15:41 Uhr
Hallo kali64 und willkommen im Forum!

Versuch es so:
01.
@echo off & setlocal 
02.
set "Datei=para.txt"  
03.
set "zuersetzen=printer_name =" 
04.
set "ersetzenmit=printer_name ^= 9966558" 
05.
set "t=%temp%\text.tmp"  
06.
del "%t%" 2>nul 
07.
for /f "usebackq delims=" %%i in ("%Datei%") do (echo %%i|findstr /b /c:"%zuersetzen%">nul && echo %ersetzenmit%||echo %%i)>>"%t%" 
08.
move "%t%" "%Datei%"
[Edit] Zeile 7 noch etwas "behübscht" [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
13.08.2010 um 15:53 Uhr
müsste dann die Maskierung nicht in
die Variable zuersetzen
weil das erste unmaskierte = wird doch für die Zuweisung genommen

Gruß Phil
Bitte warten ..
Mitglied: bastla
13.08.2010 um 15:55 Uhr
@PH
müsste dann die Maskierung nicht in
die Variable zuersetzen
... auch nicht - dann wird der String gar nicht erst gefunden ...

Grüße
bastla
Bitte warten ..
Mitglied: kali64
13.08.2010 um 16:00 Uhr
Hi TimoBeil,

das habe ich auch schon versucht, kommt leider auch wieder "=tp5_printer_name = 9966558= " raus.

Trotzden danke für die schnelle Hilfe
Bitte warten ..
Mitglied: pieh-ejdsch
13.08.2010 um 16:06 Uhr
also ich habs grad probiert

man kann also das = aus einer Variable nicht mit Set ersetze(String=)mit(String-Irgendwas) herauslösen

naja wieder was gelernt
Gruß Phil
Bitte warten ..
Mitglied: kali64
13.08.2010 um 16:09 Uhr
Hi bastla,

bei mir ändert sich nichts in der para.txt, es wird nur eine Datei "nulfor" angelegt ohne Inhalt.

Grüße
kali
Bitte warten ..
Mitglied: bastla
13.08.2010 um 16:16 Uhr
Hallo kali64!

Ich habe mit
01.
printer 
02.
printer_name = 
03.
printer_location =
als "para.txt" und der oben stehenden (wieder heruntergeladenen) Batch-Version folgendes Ergebnis erhalten:
01.
printer 
02.
printer_name = 9966558 
03.
printer_location =
Auch wenn ich das (ohnehin unnötige) "^" in Zeile 4 entferne, funktioniert es weiterhin ...

Wenn Du Timos anderen Tipp (das Vermeiden von "echo off") umsetzt, solltest Du dem Fehler leichter auf die Spur kommen ...
[Edit] ... zB, dass es zwischen "nul" in Zeile 6 und "for" in Zeile 7 eine Zeilenschaltung geben sollte ... [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Biber
13.08.2010 um 16:23 Uhr
Moin bastla,

Zitat von bastla:
Ich habe mit [...] der oben stehenden (wieder heruntergeladenen) Batch-Version folgendes Ergebnis erhalten:

Du würdest den Fehler bestimmt sofort finden, wenn kali64 seine Version postet und du diese herunterlädst...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
13.08.2010 um 16:29 Uhr
@Biber
Hoffentlich müsste ich sie noch nicht mal runterladen ...

Grüße
bastla
Bitte warten ..
Mitglied: kali64
13.08.2010 um 16:55 Uhr
Juhuu...es RENNT!!!

Keine Ahnung, warum es gerade eben nicht funktioniert hat, aber jetzt läuft es ohne Fehler.

Vielen Dank für eure schnelle Hilfe, ihr seid echt Klasse!!!

Viele Grüße + angenehmen Abend noch
Kali
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Suchen ersetzen mit Sonderzeichen (2)

Frage von GNLen1 zum Thema Batch & Shell ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen (4)

Frage von mIsSteR zum Thema Batch & Shell ...

Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Batch & Shell
gelöst Sonderzeichen in eine Batch automatisch einfügen (18)

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

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

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

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (11)

Frage von Spitzbube zum Thema Netzwerke ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...