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

Batch Problem, Suchen und Ersetzen in einer ini-Datei

Frage Entwicklung Batch & Shell

Mitglied: ufo2012

ufo2012 (Level 1) - Jetzt verbinden

05.08.2008, aktualisiert 14:08 Uhr, 8247 Aufrufe, 6 Kommentare

Hallo,

ich habe mich schon seit gestern durch das Forum durchgegraben, habe auch viele hinweise gefunden, nur fehlt mir noch ein kleiner Hinweis, um das Problem zu lösen.

Ich möchte gerne in einer ini-Datei eine komplette zeile löschen und durch eine neue ersetzen. Soll so ausschauen:

vorher:
[Notes]
DominoResLang=de
Directory=C:\Lotus\Notes
KitType=1
InstallType=2
WinNTIconPath=C:\Lotus\Notes\Data\W32
Timezone=-1


nachher:
[Notes]
DominoResLang=de
Directory=C:\Dokumente und Einstellungen\%username%\Eigene Dateien
KitType=1
InstallType=2
WinNTIconPath=C:\Lotus\Notes\Data\W32
Timezone=-1

ich habe jetzt schon herausgefunden wie man (leider) beide Zeilen ändert.
durch:




@echo off & setlocal enabledelayedexpansion

set "Datei=c:\test.ini"
set "Directory=C:\Lotus\Notes"
set "Nach=c:\Dokumente und Einstellungen\%username%\Eigene Dateien"
set "t=%temp%\text.tmp"


if exist "%t%" del "%t%"
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine

move "%t%" "%Datei%"

goto :eof

:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"
if not defined L >>"%t%" echo\& goto :eof
>>"%t%" echo !L:%Directory%=%Nach%!

goto :eof

Am liebsten würde ich gerne die Zeile "set "Directory=C:\Lotus\Notes" " so schreiben, leider funktioniert das dann nicht

"set "Von=Directory=C:\Lotus\Notes" "



grüßle

ufo2012
Mitglied: bastla
05.08.2008 um 11:44 Uhr
Hallo ufo2012!

Hier sollte (das für die Verarbeitung von Text besser geeignete) VBScript zusätzlich verwendet werden (auch, wenn es weiterhin ein Batch bleibt):
01.
@echo off & setlocal 
02.
 
03.
set "Datei=C:\test.ini" 
04.
set "Von=Directory=C:\Lotus\Notes" 
05.
set "Nach=Directory=c:\Dokumente und Einstellungen\%%username%%\Eigene Dateien" 
06.
 
07.
set "R=%temp%\Repl.vbs" 
08.
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Datei%").ReadAll:fso.CreateTextFile("%Datei%",True).Write Replace(T,"%Von%","%Nach%") 
09.
 
10.
cscript //nologo %R%
Bitte beachten: Wenn die Variable %username% nicht aufgelöst werden soll, muss sie mit doppelten Prozentzeichen geschrieben werden.

Grüße
bastla
Bitte warten ..
Mitglied: ufo2012
05.08.2008 um 12:33 Uhr
Hallo bastla,

danke für die schnelle Antwort, aber funktioniert leider nicht.


Fehlermeldung:
"Input-Fehler: Für die Dateierweiterung ".vbs@echo" gibt es kein Skriptmodul.
FINDSTR: /c wurde ignoriert"


und der Inhalt schaut dann so aus:


"

\Lotus\Notes


\Lotus\Notes\Data\W32

"

Kann es seien, da ich noch Win2000 verwende, dass dies Probleme bereitet?

grüßle

ufo2012
Bitte warten ..
Mitglied: bastla
05.08.2008 um 12:40 Uhr
Hallo ufo2012!

Nur zur Sicherheit: Der von mir gepostete Batch ist eigenständig zu verwenden und nicht mit dem ersten Batch zu kombinieren ...

Grüße
bastla
Bitte warten ..
Mitglied: ufo2012
05.08.2008 um 12:54 Uhr
Hallo bastla,

stimmt, ich habe es in die bestehende batchdatei hineinkopiert.

Soweit, so gut, ich habe jetzt ein bißchen hin und her probiert, aber

leider ändert sich gar nichts. (oder ich übersehe etwas)


grüßle

ufo2012
Bitte warten ..
Mitglied: bastla
05.08.2008 um 13:09 Uhr
Hallo ufo2012!

Mit den von Dir geposteten Testdaten klappt es bei mir ...

Um Groß-/Kleinschreibung der zu ersetzenden Zeile als Fehlerquelle auszuschließen, verwende bitte als Ersatz für die Zeile 8:
01.
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Datei%").ReadAll:fso.CreateTextFile("%Datei%",True).Write Replace(T,"%Von%","%Nach%",1,-1,1)
Wenn Du außerdem (nur zum Testen) in der ersten Zeile "echo off" durch "echo on" ersetzt und den Batch von der Kommandozeile startest, kannst Du den Ablauf nachvollziehen.

Grüße
bastla
Bitte warten ..
Mitglied: ufo2012
05.08.2008 um 14:08 Uhr
Hi bastla,

Ja es klappt, tausend Danke dafür. Erspart mir sehr viel arbeit.

Danke nochmals


grüßle

ufo2012
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Windows Server
gelöst Terminalserver .ini Datei unter C:Windows (8)

Frage von geocast zum Thema Windows Server ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

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

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...