Top-Themen

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, 14158 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
Suchen ersetzen mit Sonderzeichen
gelöst Frage von GNLen1Batch & Shell2 Kommentare

Hallo zusammen. Ich habe einen Suchen /Ersetzen Code aus diesem Forum genommen. In einer Datei wird nach bestimmten Begriffen ...

Batch & Shell
Suchen und Ersetzen mit Sonderzeichen
gelöst Frage von snowdreamBatch & Shell6 Kommentare

Hallo zusammen, ich brauche mal wieder eure Hilfe. Ich hab hier im Forum schon einiges gelernt und auch schon ...

Batch & Shell
Powershell String Suchen mit Wildcard und Ersetzen
gelöst Frage von herrmanndominicBatch & Shell6 Kommentare

Hallo zusammen, ich bräuchte Unterstützung bei einem Powershell Script. Ich habe ein Java Rollout per GPO über ein PowerShell ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen
Frage von mIsSteRBatch & Shell4 Kommentare

Hallo, meine aktuelle Frage bezieht sich auf diese Frage von Dienstag. Ich muss nun eine csv auslesen und dort ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 6 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 7 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 14 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...