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

INI Datei über Batch Script verändern

Mitglied: Schmidle

Schmidle (Level 1) - Jetzt verbinden

07.08.2015 um 13:18 Uhr, 1591 Aufrufe, 3 Kommentare

Hallo zusammen,

ich muss in einer ini Datei einen Eintrag anpassen, der den ProxyServer hinterlegt. Wir haben einen neuen Proxy Server bekommen mit einer neuen Adresse und einem neuen Port.
INI Datei sieht wie folgt aus: (Adressen sind nur ein Beispiel)

[GENERAL]
SERVER1=https://test.de
USERNAME=test@test.com
ACCEPTSHUTDOWN=1
AGENTMODE=1
COMPANYTYPE=0
REBOOTIMMEDIATEPENDING=0
RUNASSETSCANIMMEDIATE=0
[PROXYSERVER]
ENABLED=1
HOST=4.4.4.4
PORT=5000
USERNAME=test\Muser
USERKEY=123456
CACHEPATH=
FAILING=1
VERBOSELOGGING=0

Ich muss den Eintrag Proxy Server nun wie folgt anpassen:
[PROXYSERVER]
ENABLED=1
HOST=8.8.8.8
PORT=8000
USERNAME=
USERKEY=

Es kann aber auch vorkommen, dass der Eintrag des Proxyservers gar nicht in der INI Datei vorhanden ist, dann müsste das Script den Eintrag erstellen.

Ich habe selbst mal versucht eine Batch anzulegen. Ich komme aber nicht mehr weiter, meine Batch kann nur eine Zeile verändern, und auch nur wenn der Eintrag vorhanden ist.
So sieht meine Batch bis jetzt aus:

@echo off & setlocal
set "ini=C:\Test\settings.ini"
set "bak=%ini%.bak"
set "Suche=[PROXYSERVER]"
set "Neu=HOST=8.8.8.8"

move "%ini%" "%bak%"
set Zeile=
for /f "tokens=1-2 delims=:" %%i in ('findstr /b /n /c:"%Suche%" "%bak%"') do set Zeile=%%i
if not defined Zeile echo "%Suche%" nicht gefunden! & pause & goto :eof

set /a Zeile+=1
for /f "tokens=1-2 delims=:" %%i in ('findstr /n "^" "%bak%"') do (
if %%i neq %Zeile% (echo\%%j) else (echo %Neu%)
)>>"%ini%"
del "%bak%"

Kann mir hier jemand helfen, sodass ich die INI Datei nach meinen Wünschen verändert ?

Grüße
Mitglied: SauBaer2014
07.08.2015 um 14:09 Uhr
... Hallo ...


wenn alle Werte innerhalb der *.ini feststehen ... also statische Werte sind (also z.B. 3 Szenerien), warum erzeugst du nicht diese 3 möglichen INI-Dateien
und änderst dann nur per Batch den Namen des Datei, die du folglich mit dem bestimmten Inhalt benötigst...?Ist doch einfacher als ein Script der den benötigten Wert setzt?


MFG
Bitte warten ..
Mitglied: Schmidle
07.08.2015 um 14:17 Uhr
in der Ini Datei stehen noch mehrere Einträge. Die bei jedem Rechner anderst sind.
Von dem her ist das leider nicht möglich.
Bitte warten ..
Mitglied: 114757
07.08.2015, aktualisiert um 16:50 Uhr
Moin zusammen,
mit Powershell sieht das so aus:

Quelle der Ini-Scripte
https://gallery.technet.microsoft.com/scriptcenter/ea40c1ef-c856-434b-b8 ...
https://gallery.technet.microsoft.com/7d7c867f-026e-4620-bf32-eca99b4e42 ...


Pfad zur Ini in Zeile 1 eintragen, den Rest für die Anpassung findest du ganz unten im Skript.
01.
$pfad = 'C:\temp\demo.ini'
02.

03.
Function Get-IniContent {
04.
    [CmdletBinding()]  
05.
    Param(  
06.
        [ValidateNotNullOrEmpty()]  
07.
        [ValidateScript({(Test-Path $_) -and ((Get-Item $_).Extension -eq ".ini")})]  
08.
        [Parameter(ValueFromPipeline=$True,Mandatory=$True)]  
09.
        [string]$FilePath  
10.
    )  
11.
      
12.
    Begin  
13.
        {Write-Verbose "$($MyInvocation.MyCommand.Name):: Function started"}  
14.
          
15.
    Process  
16.
    {  
17.
        Write-Verbose "$($MyInvocation.MyCommand.Name):: Processing file: $Filepath"  
18.
              
19.
        $ini = @{}  
20.
        switch -regex -file $FilePath  
21.
        {  
22.
            "^\[(.+)\]$" # Section  
23.
            {  
24.
                $section = $matches[1]  
25.
                $ini[$section] = @{}  
26.
                $CommentCount = 0  
27.
            }  
28.
            "^(;.*)$" # Comment  
29.
            {  
30.
                if (!($section))  
31.
                {  
32.
                    $section = "No-Section"  
33.
                    $ini[$section] = @{}  
34.
                }  
35.
                $value = $matches[1]  
36.
                $CommentCount = $CommentCount + 1  
37.
                $name = "Comment" + $CommentCount  
38.
                $ini[$section][$name] = $value  
39.
            }   
40.
            "(.+?)\s*=\s*(.*)" # Key  
41.
            {  
42.
                if (!($section))  
43.
                {  
44.
                    $section = "No-Section"  
45.
                    $ini[$section] = @{}  
46.
                }  
47.
                $name,$value = $matches[1..2]  
48.
                $ini[$section][$name] = $value  
49.
            }  
50.
        }  
51.
        Write-Verbose "$($MyInvocation.MyCommand.Name):: Finished Processing file: $FilePath"  
52.
        Return $ini  
53.
    }  
54.
          
55.
    End  
56.
        {Write-Verbose "$($MyInvocation.MyCommand.Name):: Function ended"}  
57.
} 
58.
Function Out-IniFile {
59.
    [CmdletBinding()]  
60.
    Param(  
61.
        [switch]$Append,  
62.
          
63.
        [ValidateSet("Unicode","UTF7","UTF8","UTF32","ASCII","BigEndianUnicode","Default","OEM")]  
64.
        [Parameter()]  
65.
        [string]$Encoding = "Unicode",  
66.
 
67.
          
68.
        [ValidateNotNullOrEmpty()]  
69.
        [ValidatePattern('^([a-zA-Z]\:)?.+\.ini$')]  
70.
        [Parameter(Mandatory=$True)]  
71.
        [string]$FilePath,  
72.
          
73.
        [switch]$Force,  
74.
          
75.
        [ValidateNotNullOrEmpty()]  
76.
        [Parameter(ValueFromPipeline=$True,Mandatory=$True)]  
77.
        [Hashtable]$InputObject,  
78.
          
79.
        [switch]$Passthru  
80.
    )  
81.
      
82.
    Begin  
83.
        {Write-Verbose "$($MyInvocation.MyCommand.Name):: Function started"}  
84.
          
85.
    Process  
86.
    {  
87.
        Write-Verbose "$($MyInvocation.MyCommand.Name):: Writing to file: $Filepath"  
88.
          
89.
        if ($append) {$outfile = Get-Item $FilePath}  
90.
        else {$outFile = New-Item -ItemType file -Path $Filepath -Force:$Force}  
91.
        if (!($outFile)) {Throw "Could not create File"}  
92.
        foreach ($i in $InputObject.keys)  
93.
        {  
94.
            if (!($($InputObject[$i].GetType().Name) -eq "Hashtable"))  
95.
            {  
96.
                #No Sections  
97.
                Write-Verbose "$($MyInvocation.MyCommand.Name):: Writing key: $i"  
98.
                Add-Content -Path $outFile -Value "$i=$($InputObject[$i])" -Encoding $Encoding  
99.
            } else {  
100.
                #Sections  
101.
                Write-Verbose "$($MyInvocation.MyCommand.Name):: Writing Section: [$i]"  
102.
                Add-Content -Path $outFile -Value "[$i]" -Encoding $Encoding  
103.
                Foreach ($j in $($InputObject[$i].keys | Sort-Object))  
104.
                {  
105.
                    if ($j -match "^Comment[\d]+") {  
106.
                        Write-Verbose "$($MyInvocation.MyCommand.Name):: Writing comment: $j"  
107.
                        Add-Content -Path $outFile -Value "$($InputObject[$i][$j])" -Encoding $Encoding  
108.
                    } else {  
109.
                        Write-Verbose "$($MyInvocation.MyCommand.Name):: Writing key: $j"  
110.
                        Add-Content -Path $outFile -Value "$j=$($InputObject[$i][$j])" -Encoding $Encoding  
111.
                    }  
112.
                      
113.
                }  
114.
                Add-Content -Path $outFile -Value "" -Encoding $Encoding  
115.
            }  
116.
        }  
117.
        Write-Verbose "$($MyInvocation.MyCommand.Name):: Finished Writing to file: $path"  
118.
        if ($PassThru) {Return $outFile}  
119.
    }  
120.
          
121.
    End  
122.
        {Write-Verbose "$($MyInvocation.MyCommand.Name):: Function ended"}  
123.
} 
124.

125.
$ini = Get-IniContent -FilePath $pfad
126.

127.
if (!$ini.PROXYSERVER){
128.
    $ini.PROXYSERVER = @{}   
129.
}
130.
$ini.PROXYSERVER.ENABLED = '1'
131.
$ini.PROXYSERVER.HOST = '8.8.8.8'
132.
$ini.PROXYSERVER.PORT = '8000'
133.
$ini.PROXYSERVER.USERNAME = ''
134.
$ini.PROXYSERVER.USERKEY = ''
135.

136.
$ini | Out-IniFile $pfad -Force -Encoding UTF8
Gruß jodel32
Bitte warten ..
Ähnliche Inhalte
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 ...

Entwicklung
Werte aus INI Datei übernehmen
Frage von Manuel.PEntwicklung21 Kommentare

Guten Tag, ich habe folgendes Problem. Wir nutzen Activ Directory. Wir Nutzen nun ein Programm, das Telefongespräche anzeigt. Wenn ...

Windows Server

Terminalserver .ini Datei unter C:Windows

gelöst Frage von geocastWindows Server8 Kommentare

Guten Abend zusammen Ich habe mir hier einen Server 2012R2 Terminalserver zum Testen aufgesetzt. Ich habe dann unsere alte ...

Batch & Shell

Batch bestimmte Zeile in .ini umschreiben

gelöst Frage von HukiAlexBatch & Shell4 Kommentare

Guten Tag Ich habe eine Frage . Ich habe 2 Dateien : 1" Main.Bat" und 1 "config.ini" Code der ...

Neue Wissensbeiträge
Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 11 StundenSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 1 TagHyper-V4 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 1 TagServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Humor (lol)

"Linux und 5 Gründe Warum man kein Windows verwenden sollte sondern Ubuntu Linux"

Information von Snowbird vor 3 TagenHumor (lol)9 Kommentare

Gerade gefunden. Ja, ist etwas älter, aber irgendwie lustig?

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Grafikkarten Angebot auf Amazon
gelöst Frage von NudellordGrafikkarten & Monitore22 Kommentare

Hallo Community, ich suche eine neue Grafikkarte und bin auf die Nvidea Gforce GTX 1080 ti gestoßen. Und dabei ...

Hyper-V
Keine Netzwerkverbindung W2016 VM
gelöst Frage von keine-ahnungHyper-V19 Kommentare

Moin, ich verliere gleich meine contenance ;-). Ich versuche gerade, auf einem Hyper-V 2016 GUI eine W2016-VM (Generation 2 ...

Batch & Shell
Powershell - Webseite auslesen und Abspeichern ein paar Probleme
gelöst Frage von kime203Batch & Shell18 Kommentare

Hallo alle miteinander, ich hab die Aufgabe eine Webseite auszulesen um Einsatzdaten der Feuerwehr daraus zu gewinnen. Das habe ...

Windows 7
Systemwiederherstellung mittel Console und Schattenkopie?
Frage von Kerbel3rdWindows 717 Kommentare

Moin, leider hat mir das Update auf Framework 4.8 meinen Rechner bzw mein Framework zerschossen. Nach tagelangen Reparaturversuchen mittels ...