59769
Goto Top

Mittels Batch an bestimmte Stelle der win.ini schreiben

Ich möchte mittels Batch eine neue Zeile mit Text in der win.ini einfügen.
Der neue Text müsste immer unter demselben Eintrag stehen.
Irgendwo in meiner win.ini steht inipath=c:\programme\test\test.ini
und unter dieser Zeile möchte ich den Eintrag; winword=1 schreiben.
Kenne mich mit Batches nicht so aus...hoffe jemand kann mir einen Tip geben.

Content-Key: 78739

Url: https://administrator.de/contentid/78739

Printed on: April 16, 2024 at 04:04 o'clock

Member: gemini
gemini Jan 21, 2008 at 21:27:18 (UTC)
Goto Top
Hallo Muecke,

mit Batch kann ich dir nicht dienen, Sorry.

Wenn's auch VBs sein darf.
Hier ein Script, mit dem CapiFax für servergespeicherte Profile angepasst wurde.
Es sucht in der win.ini eine Zeile die mit WorkDir=\\<server>\CapiFax\ beginnt und ergänzt sie zu WorkDir=\\<server>\CapiFax\<username>.CLT
Option Explicit

Dim objFSO, objWshNetwork, objFile
Dim strWorkDir, strText, strLine, strPathFind, strExt
Const ForReading = 1, ForWriting = 2, ForAppending = 8

strWorkDir = "C:\Windows\win.ini"  
strText = ""  
strPathFind = LCase("WorkDir=\\<server>\CapiFax\")  
strExt = ".CLT\"  

Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")  

If objFSO.FileExists(strWorkDir) Then
Set objFile = objFSO.OpenTextFile(strWorkDir, ForReading)
    Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
        If Left(LCase(strLine), Len(strPathFind)) = strPathFind Then
            Set objWshNetwork = Wscript.CreateObject("WScript.Network")  
            strLine = strPathFind & objWshNetwork.UserName & strExt
	End If
        strText = strText & strLine & vbCrLf
    Loop
objFile.Close
Else
    MsgBox "Die Datei " & strWorkDir & " wurde nicht gefunden."  
End If

Set objFile = objFSO.OpenTextFile(strWorkDir, ForWriting)
objFile.Write strText
objFile.Close
strWorkDir = ""  
strText = ""  
strLine = ""  
strPathFind = ""  
strExt = ""  

HTH,
gemini
Member: bastla
bastla Jan 21, 2008 at 21:48:41 (UTC)
Goto Top
@gemini
Schöne Lösung ... face-smile

@59769
Wenn's doch Batch sein soll:
@echo off & setlocal
set "Quelle=%windir%\win.ini"  
set "Mark=inipath=c:\programme\test\test.ini"  
set "Insert=; winword=1"  

set "TempTxt=%temp%\TT.txt"  
copy "%Quelle%" "%TempTxt%">nul  

set Zeile=0
for /f "delims=:" %%i in ('findstr /n /i /b /c:"%Mark%" "%TempTxt%"') do set Zeile=%%i  

del "%Quelle%"  

if %Zeile%==0 goto :Rest
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%TempTxt%"') do if %%i leq %Zeile% echo.%%j>>"%Quelle%"  

echo %Insert%>>"%Quelle%"  

:Rest
more +%Zeile% "%TempTxt%">>"%Quelle%"  
Sollte etwas schiefgegangen sein, liegt die ursprüngliche "win.ini" noch als "%temp%\TT.txt" vor.

Grüße
bastla
Mitglied: 59769
59769 Jan 22, 2008 at 08:16:47 (UTC)
Goto Top
Hallo zusammen

vielen Dank!
Da ich es für eine Softwareinstallation benötige, und die Befehle schon alle in einem Batch sind, versuch ichs mal mit der Batch Version. Danke trotzdem auch für die VB's, leider kenn ich mich damit noch fast zuwenig aus...Uebung macht den Meister face-wink