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 - Eintrag in einer .ini datei verändern

Frage Entwicklung Batch & Shell

Mitglied: 73168

73168 (Level 1)

22.12.2008, aktualisiert 01:50 Uhr, 14074 Aufrufe, 7 Kommentare

Hallo Community,

da ich im Bereich des batchings noch nicht sehr viel Ahnung habe, bitte ich im vorraus um Nachsicht!
Zu meinem Problem:

Ich habe eine .ini Datei mit der Klasse und Wert:

[Person]
Nachricht=Dies ist meine persönliche Nachricht!

nun möchte ich den Parameter verändern:

[Person]
Nachricht=Neue persönliche Nachricht. Sie wurde verändert.

wie kann ich dieses tun, ohne ein zusatzprogramm wie setini zu verwenden?
Der Wert steht direkt unter der Klasse, doch ist im gesamten Dokument nicht bekannt, wo diese Klasse steht.
Genausowenig ist bekannt, was der Parameter des Wertes "Nachricht=" ist.

Kurz: Ein batch Programm, mit dem ich den Text (egal welchen) hinter "Nachricht=" entferne und dafür meinen Text einsetze.

Danke im Vorraus!
Takeo91
Mitglied: laggflor
22.12.2008 um 09:53 Uhr
wie kann ich dieses tun, ohne ein zusatzprogramm wie setini zu verwenden?
Garnicht?
Kann dir 'sed' ans Herz legen - kommt von Unix und kann so gut wie alles ersetzen und noch mehr (per Regular Expressions).
Wenn du's ohne Tools schaffst bitte mitteilen - kann ich mir aber nicht vorstellen.

Sed für Windows hab ich noch nie getestet:
http://gnuwin32.sourceforge.net/packages/sed.htm

Hint:
sed -e 's/Such-Regexp/Ersetzen/g' myfile.ini > myfileNeu.ini

Viel Spass damit.
Bitte warten ..
Mitglied: bastla
22.12.2008 um 11:15 Uhr
@laggflor
Deinem Vorschlag mit "sed" würde ich mich anschließen (hätte ich nicht den Eindruck, Takeo91 möchte/darf keine externen Tools verwenden) ...

Garnicht?
Vielleicht doch?
01.
@echo off & setlocal 
02.
set "ini=D:\Deine.ini" 
03.
set "bak=%ini%.bak" 
04.
set "Suche=[Person]" 
05.
set "Neu=Nachricht=Neue persönliche Nachricht. Sie wurde verändert." 
06.
 
07.
move "%ini%" "%bak%" 
08.
 
09.
set Zeile= 
10.
for /f "tokens=1-2 delims=:" %%i in ('findstr /b /n /c:"%Suche%" "%bak%"') do set Zeile=%%i 
11.
if not defined Zeile echo "%Suche%" nicht gefunden! & pause & goto :eof 
12.
 
13.
set /a Zeile+=1 
14.
for /f "tokens=1-2 delims=:" %%i in ('findstr /n "^" "%bak%"') do ( 
15.
    if %%i neq %Zeile% (echo\%%j) else (echo %Neu%) 
16.
)>>"%ini%"
Falls die erstellte ".bak"-Datei nicht benötigt wird, einfach noch die Zeile
del "%bak%"
hinzufügen.

Grüße
bastla
Bitte warten ..
Mitglied: laggflor
22.12.2008 um 11:40 Uhr
OK, das wären Windows-Bordmittel. Wobei die

C:\Windows\system32\findstr.exe

nicht wirklich Batch-eigen ist.

Apropos keine externen Tools erlaubt: Wie siehts mit PowerShell aus? Die Wäre offiziell von M$ supported. Alternativ könnte man auch noch VB-Script zu rate ziehen (ist IMHO bei XP mit dabei).

*ironie ein*
Falls externe Tools erlaubt sind tendiere ich zu OO-Programmierung in Python - damit erschlagen wir dann jede Netzwerk-Bandbreite wenn wir zuerst die komplette Python-Runtime installieren um einen String zu ändern. *gg*
Insgesamt wäre natürlich ein installiertes Python auf dem Client schon wieder von Vorteil.
*ironie aus*

Takeo91, choose your weapons
Bitte warten ..
Mitglied: 73168
22.12.2008 um 15:12 Uhr
Ein sehr Herzliches dankeschön an alle!
Habe mich für den quelltext von bastla entschieden

Gruß, Takeo
Bitte warten ..
Mitglied: bastla
22.12.2008 um 15:56 Uhr
@laggflor
Wobei die

C:\Windows\system32\findstr.exe

nicht wirklich Batch-eigen ist.
Falls Du meinst, es handle sich dabei um keinen internen CMD-Befehl, hast Du natürlich recht - mit der Bezeichnung als "Bordmittel" allerdings auch.

Grüße
bastla
Bitte warten ..
Mitglied: burningstep
02.11.2014 um 16:56 Uhr
Hallihallo

Aktuell beschäftige ich mich mit dem gleichen Thema, wie ini-Dateien automatisch ändern zu lassen. Das Script von bastla funktioniert tiptop. Jedoch ist da diese Schleife, welche ich nicht ganz verstehe:

01.
for /f "tokens=1-2 delims=:" %%i in ('findstr /n "^" "%bak%"') do ( 
02.
    if %%i neq %Zeile% (echo\%%j) else (echo %Neu%) 
03.
)>>"%ini%"
Würde mir bitte jemand erklären, was:
- das Dächlein in der ersten Zeile macht?: "^"
- der Backslash in der zweiten Zeile zwischen echo und %%j macht?: echo\%%j


Vielen lieben Dank bereits im Voraus
burningstep
Bitte warten ..
Mitglied: rubberman
02.11.2014 um 17:14 Uhr
Hallo burningstep,

es wäre besser gewesen einen neuen Thread aufzumachen. Du hast Glück, dass ich zufällig gesehen habe, dass jemand nach Jahren noch eine Frage in einem so alten Thread stellt ...

- das Dächlein in der ersten Zeile macht?: "^"
Das Caret gehört zu den von FINDSTR unterstützten Regulären Ausdrücken (wie du der Hilfe findstr /? hättest entnehmen können) und matcht einen Zeilenanfang. Zusammen mit der Option /n lassen sich so auch Leerzeilen einer Datei verarbeiten.

- der Backslash in der zweiten Zeile zwischen echo und %%j macht?: echo\%%j
Der Backslash ist eines der möglichen Zeichen, um die Ausgabe "ECHO ist ein/ausgeschaltet" zu unterdrücken. Da auch Leerzeilen verarbeitet werden, kann %%j durchaus einen leeren String enthalten.

Grüße
rubberman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
INI Datei über Batch Script verändern
Frage von SchmidleBatch & Shell3 Kommentare

Hallo zusammen, ich muss in einer ini Datei einen Eintrag anpassen, der den ProxyServer hinterlegt. Wir haben einen neuen ...

Batch & Shell
INI Datei via Batch auslesen, verändern und nur einen Teil übernehmen in neue Datei
gelöst Frage von NovalyBatch & Shell2 Kommentare

Hallo Brauch mal Hilfe , hab schon einiges hier gefunden aber nichts klappt wie ich es genau möchte. folgendes: ...

Batch & Shell
BATCH ini Datei Datei auslesen
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Windows Tools
Powershell mehrere Einträge in einer ini abspeichern
gelöst Frage von H41mSh1C0RWindows Tools3 Kommentare

Hi PS Guru's, Quelle: <Marker>_<Datum>_<OS> Ich bekomme das Quellverzeichnis ausgelesen und bekomme auch das Datagrid gefüllt. Jetzt versuche ich ...

Neue Wissensbeiträge
Windows 10

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

Tipp von kgborn vor 4 StundenWindows 10

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 6 StundenSicherheits-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 20 StundenInternet3 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 1 TagDSL, VDSL1 Kommentar

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

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...