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

Anführungszeichen aus Textdatei auslesen und schreiben

Frage Entwicklung Batch & Shell

Mitglied: Midnightmaster

Midnightmaster (Level 1) - Jetzt verbinden

27.06.2009, aktualisiert 13:21 Uhr, 5079 Aufrufe, 7 Kommentare, 1 Danke

Hi!

Ich möchte gerne per Batch in einer Configdatei einen Wert verändern, was auch teilweise funktioniert.

Inhalt der Config:

Diverse Werte...
.
.
<log="connect1">214</tc>
.
.

Soll verändert werden in z.B.:

<log="connect1">88</tc>

Auszug aus der Batch:

@echo off & setlocal enabledelayedexpansion
set "Datei=C:\Data\connect.cfg"
set "Von=214"
set "Nach=88"
set "t=%temp%\connect.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & >>"%t%" echo !Line!
move "%t%" "%Datei%"

Nachteil hierbei ist, das der vorherige Wert immer 214 sein muss (großer nachteil) und andere Werte in der Config die auch 214 sind
auch in 88 geändert werden.
Problem ist, das die zuweisung in Anführungszeichen steht (Nicht zu ändern). Hab da schon viel mit der Syntax herumgebastelt, aber
nichts brauchbares erreicht!
Sowas kommt dabei heraus wenn ich am basteln bin:

<log=""connect1">88</tc>
oder bei ignorierung des vorherigen Wertes:
<log="connect1">88</tc>>214</tc>

Am besten wäre es, wenn der vorherige Wert egal wäre und einfach nur der neue gesetzt werden würde!

Gruß
Midnightmaster
Mitglied: pieh-ejdsch
27.06.2009 um 13:55 Uhr
01.
for /f "tokens=1,2 delims=<" %%i in ('findstr "log="connect1"" C:\Data\connect.cfg') do if "%%j"=="214</tc>" echo ^%%i^>88^</tc^>>>%temp%\connect.tmp
Bitte warten ..
Mitglied: Midnightmaster
27.06.2009 um 14:44 Uhr
Zitat von pieh-ejdsch:
01.
for /f "tokens=1,2 delims=<" %%i in  ('findstr "log="connect1""  C:\Data\connect.cfg') do if "%%j"=="214</tc>" echo  ^%%i^>88^</tc^>>>%temp%\connect.tmp

Irgendwie funktioniert das nicht! Wie muss ich das denn in die ursprüngliche Batch einbinden? Hab diverse Varianten
probiert, aber keinerlei änderung an der cfg. Sagte ich schon, das ich von der Batch-Programmierung wenig bis
gar keine ahnung habe?

Gruß
Midnightmaster
Bitte warten ..
Mitglied: bastla
27.06.2009 um 16:16 Uhr
Hallo Midnightmaster und willkommen im Forum!

Die Bearbeitung von HTML-/XML-Dateien mit Batch ist wegen der besonderen Bedeutung von "<" und ">" in der CMD-Shell etwas mühsam (weshalb ich dann eher zu VBS greife), sollte sich aber vielleicht so trotzdem machen lassen:
01.
@echo off & setlocal 
02.
set "cfg=C:\Data\connect.cfg" 
03.
set "alt=<log=\"connect1\">" 
04.
set "neu=^<log="connect1"^>88^</tc^>" 
05.
 
06.
move "%cfg%" "%cfg%.bak" 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%cfg%.bak"') do ( 
08.
    echo "%%j"|findstr /c:"%alt%">nul && (echo %neu%) || echo\%%j 
09.
)>>"%cfg%" 
10.
del "%cfg%.bak"
Grüße
bastla

[Edit] Zeile 3 gekürzt, sodass nicht mehr nach "214" gesucht wird [/Edit]
Bitte warten ..
Mitglied: Midnightmaster
27.06.2009 um 16:58 Uhr
Cool, vielen Dank!

Mit einer kleinen änderung ist es jetzt auch egal, wie der Wert vorher war:
01.
@echo off & setlocal 
02.
set "cfg=C:\Data\connect.cfg" 
03.
set "alt=<log=\"connect1\">" 
04.
set "neu=^<log="connect1"^>88^</tc^>" 
05.
 
06.
move "%cfg%" "%cfg%.bak" 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%cfg%.bak"') do ( 
08.
    echo "%%j"|findstr /c:"%alt%">nul && (echo %neu%) || echo\%%j 
09.
)>>"%cfg%" 
10.
del "%cfg%.bak"
Gruß
Midnightmaster



[Edit Biber] Code in Codetags gesetzt. [/Edit]
Bitte warten ..
Mitglied: LotPings
27.06.2009 um 19:25 Uhr
Hallo Midnightmaster.

Hier noch ein Einzeiler mit Sed und Regular Expressions.

sed -re "s|^(<log=\"connect1\">)214(</tc>$)|\188\2|g" test.txt

^und $ sind Anker für Zeilenanfang/-Ende.
Anführungszeichen müssen mit \ escaped werden,
Klammern kennzeichnen Bereiche, die in die Ausgabe mit Angabe von \1 für das erste Paar etc übernommen werden können.

Sed bekommt man u.a, Hier
Und hier ein Tutorium

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
27.06.2009 um 19:37 Uhr
@LotPings
Vielleicht noch besser dem Vorhaben von Midnightmaster entsprechend:
sed -re "s|^(<log=\"connect1\">)[0-9]+(</tc>$)|\188\2|g" C:\Data\connect.cfg

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
27.06.2009 um 19:41 Uhr
Danke für den Hinweis bastla,

das stand auch mal so da, aber ist beim überarbeiten abhanden gekommen

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Auslesen einer Datei mit einem Anführungszeichen im Text
Frage von c20082005Batch & Shell1 Kommentar

Hallo zusammen, ich habe ein Problem, das ich auch nach einiger Recherche im Internet nicht gelöst bekomme: Ich habe ...

Batch & Shell
Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen
gelöst Frage von georg2204Batch & Shell3 Kommentare

Hallo, nach langem Suchen und Probieren komme ich leider nicht mehr weiter. Ich habe eine Textdatei, aus dieser soll ...

Batch & Shell
Dateierweiterungen in eine Textdatei schreiben
gelöst Frage von joe65Batch & Shell3 Kommentare

Hallo, ich hab nach längerer Zeit wieder mal ein Batch-Problem. Ich möchte alle Dateierweiterungen (txt, docx, jpg, etc.) die ...

Batch & Shell
Textdatei zeilenweise in Variable schreiben
gelöst Frage von goodbytesBatch & Shell20 Kommentare

Hallo, mit einer Batch möchte ich mehrere Laufwerke mappen, abhängig vom Usernamen. Klar könnte ich auch für jeden User ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 106 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless9 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...