Ini Datei einlesen und alle Zeilen einzeln abarbeiten
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Hallo Zusammen,
da ich hier im Forum nicht so richtig fündig werde oder ich es vielleicht auch nicht ganz kapiere
möchte ich euch hiermit um Hilfe bitten.
Es geht darum eine "Software.ini" Datei einzulesen über die Setup.inf Routine. pro Zeile steht immer ein Paketname.
Beispiel:
Adobe_Reader
Firefox
InternetExplorer
Nun will ich in der Registry alle Unterschlüssel welche sich unter HKLM\Software\CC\<<ALLE PAKETNAMEN AUS DER INI>> löschen.
Zuvor mache ich auch eine Abfrage ob es die ini überhaupt gibt. Wenn ja dann führe einen Ping aus und schreibe ein Logfile das ini vorhandn ist. Wenn nein dann schreibe ein Log File das keine ini vorhanden ist und führe keinen Ping aus. Das Funktioniert schon mal
Die Ini wird auch korrekt eingelesen, zumindest lasse ich mir als Test ein ECHO ausgeben zum Inhalt der ini. Auch das klappt
Wie stelle ich es nun an das jede Zeile der ini ausgelesen wird und weiter übergeben wird an den RegDelete Befehl
Viele Grü0ß und besten Dank schon mal im Voraus
da ich hier im Forum nicht so richtig fündig werde oder ich es vielleicht auch nicht ganz kapiere
möchte ich euch hiermit um Hilfe bitten.
Es geht darum eine "Software.ini" Datei einzulesen über die Setup.inf Routine. pro Zeile steht immer ein Paketname.
Beispiel:
Adobe_Reader
Firefox
InternetExplorer
Nun will ich in der Registry alle Unterschlüssel welche sich unter HKLM\Software\CC\<<ALLE PAKETNAMEN AUS DER INI>> löschen.
Zuvor mache ich auch eine Abfrage ob es die ini überhaupt gibt. Wenn ja dann führe einen Ping aus und schreibe ein Logfile das ini vorhandn ist. Wenn nein dann schreibe ein Log File das keine ini vorhanden ist und führe keinen Ping aus. Das Funktioniert schon mal
Die Ini wird auch korrekt eingelesen, zumindest lasse ich mir als Test ein ECHO ausgeben zum Inhalt der ini. Auch das klappt
Wie stelle ich es nun an das jede Zeile der ini ausgelesen wird und weiter übergeben wird an den RegDelete Befehl
Viele Grü0ß und besten Dank schon mal im Voraus
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Am schwierigsten ist hier das Auslesen der reinen ASCII-Datei.
Eventuell geht das per ReadTextFile und dann mit Tokenize, bin mir aber nicht sicher.
Könnte man nicht eine INI- oder XML-Datei als Basis nehmen?
Der Rest ist recht einfach:
FOR-NEXT-Schleife um durch die Werte durchzugehen, Aufruf der jeweiligen Sektionen ggf. mit "#!" statt "#" damit sie auch mehrfach angesprungen werden.
Eventuell geht das per ReadTextFile und dann mit Tokenize, bin mir aber nicht sicher.
Könnte man nicht eine INI- oder XML-Datei als Basis nehmen?
Der Rest ist recht einfach:
FOR-NEXT-Schleife um durch die Werte durchzugehen, Aufruf der jeweiligen Sektionen ggf. mit "#!" statt "#" damit sie auch mehrfach angesprungen werden.
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Wie ist die Software.ini genau aufgebaut? Wie wird die erstellt? Ist die Anzahl der Datensätze bekannt?
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Anbei die Setup.inf
[SetupInfo]
Author =test
CreationDate =01/10/2013 10:27:34
InventoryID =
Description =
Method =install.cmd ALWAYS CACHE !
Tested on =
Dependencies =
Command line options = /S0
Last Change =01/10/2013 10:27:34
Build =0
[VarDefInfo]
[Setup]
Version=10.5
ShowCaption=1
BlockInput=0
Platform=*
[Requirements]
[Application]
ProductName=TEST
ProductNameShort=TEST
Version=1.0
Revision=0
DeveloperName=CC
SetupName=%ProductName%
UserKeyName=%DeveloperName%\%ProductName%
MachineKeyName=%DeveloperName%\%ProductName%\%Version%
UninstallKeyName=%DeveloperName% %ProductName% %Version%
UninstallDisplayName=[EMPIRUM] %ProductName%
UninstallDisplayIcon=C:\EmpirumAgent\User\Agent.ico
UninstallString=%ReinstallString% /U
ReinstallString="%CommonSetupDir%\Setup.exe" "%SRC%\%SetupInfDir%\Setup.inf"
ReinstallMode=0
HideUninstall=0
SrcDir=..
ApplicationDir=%ProgramFilesDir%\%ProductName%
SetupInfDir=Install
DataDir=%Personal%
Prompts=
AskUninstallOld=0
ShellLinks=1
CommonShellLinks=1
CreateUnresolvableShellLinks=1
UseStringSection=Strings:09
UseSysStringSection=SysStrings:09
DateWarning=0
SizeWarning=0
Reboot=2
PreventExternalReboot=1
StartServicesOnReboot=0
CallTimeOut=3600
AbortAfterCallTimeOut=1
DisableCancelButton=1
ShowEndMessage=0
[Strings:07]
Disk1=Installationsmedium 1
EndMessageDesc=Die Installation wurde erfolgreich abgeschlossen!
ErrorLogMessage=Die Installation/Deinstallation wurde mit einer Fehlermeldung abgebrochen!
InstallationFor=Installation f?r:
InstallerDesc=Dienstprogramm zum Installieren einzelner Komponenten.
InstallerName=Installationsprogramm
SetupWizard=Installations-Assistent
Uninstallation=deinstallieren
[Strings:09]
Disk1=Installation media 1
EndMessageDesc=Installation was completed successfully!
ErrorLogMessage=The installation/uninstallation aborted with an error message!
InstallationFor=Installation for:
InstallerDesc=Service program to install single components.
InstallerName=Setup program
SetupWizard=Installation Wizard
Uninstallation=Uninstallation
[SysStrings:07]
Users=Benutzer
[SysStrings:09]
Users=Users
[Environment]
CommonSetupDir=%CommonFilesDir%\Setup%SetupBits%
V_MachineValuesPath=\\%EmpirumServer%\Values$\MachineValues\%DomainName%
V_UserValuesPath=%HKLM,"Software\matrix42\Software Depot","HomeServer"%\Values$\UserValues\%UserDomain%
[Prompts]
[Services]
[Processes]
[EventSources]
[Encryption]
[Disks]
1=%Disk1%
[Options]
Installer = %InstallerName%, COPYALWAYS, Installer, "%InstallerDesc%"
Product = %ProductName%, COPYALWAYS, Product, "%ProductDesc%"
[Installer]
1:..\..\..\..\User\Setup.exe, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupDeu.chm, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupEnu.chm, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\Mx42SynSem.dll, %System%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP WINDOWS32, 0
1:..\..\..\..\User\x64\Mx42SynSem.dll, %System%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP WINDOWS64, 0
1:%SetupInfDir%\Setup.inf, , NORMAL, 0
1:%Temp%\Setup64.exe, %CommonSetupDir%\Setup.exe, OPTIONAL NOSIZEWARNING SETUP ALWAYS WINDOWS64, 0
[Product]
#Set:Product, DONTDELETE
#Set:Remove, DELETE
[Set:Product]
; 1. Überprüfen ob "SW-Packages-old.ini" in Paketverzeichnis liegt und Installation starten
Set SWIniFile=[SW-Packages-old.ini]
Set SWIniPath=c:\EmpirumAgent\Packages\CC\%ProductName%\%SWIniFile%
Set ReadSWIni=C:\EmpirumAgent\Packages\CC\%Productname%\SW-Packages-old.ini
If DoesFileExist ("C:\EmpirumAgent\Packages\CC\%Productname%\SW-Packages-old.ini") == "1" Then "Product-Install" Else "NoSWPackagesOldIniFound" EndIf
[Product-Install]
; Da ini vorhanden ist, die Installation starten und alte Paketvorgänger RegKeys aus Variable "IniContent" löschen
Callhidden cmd /c Echo %SysDate% %SysTime% - %SWIniPath% was found and old Package Registry Keys can be deleted! > C:\temp\%ProductName%_%SWIniFile%_FOUND.log
set IniContent=ReadTextFile ("%ReadSWIni%")
Callhidden cmd /c Echo %SysDate% %SysTime% - Packages was been found in %SWIniFile% ! >> C:\temp\%ProductName%_%SWIniFile%_FOUND.log
<<<<<<<HIER MUSS DER AUFRUF REIN FÜR DIE INI ABARBEITUNG>>>>
CallHidden cmd /c "%SRC%\Ping2.cmd"
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
[NoSWPackagesOldIniFound]
; Wenn ini nicht vorhanden ist dann Error Log schreiben und Installation trotzdem starten
CallHidden cmd /c "%SRC%\Ping3.cmd"
Callhidden cmd /c Echo %SysDate%--%SysTime% - %SWIniPath% not found and old Package Registry Keys can not be deleted! > C:\temp\%ProductName%_%SWIniFile%_NOT-FOUND.log
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
[Set:Remove]
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
-CallHidden cmd /c "%SRC%\uninstall.cmd"
[CheckForReboot]
If %ErrorLevel% == "3010" Then "RebootRequired" Else "SetupError" EndIf
[RebootRequired]
SetReboot 1
-SetReboot 1
[SetupError]
ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText%
Abort %ErrorText% %ErrorLevel% %CallingText%
-Abort %ErrorText% %ErrorLevel% %CallingText%
-ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText%
[SetupInfo]
Author =test
CreationDate =01/10/2013 10:27:34
InventoryID =
Description =
Method =install.cmd ALWAYS CACHE !
Tested on =
Dependencies =
Command line options = /S0
Last Change =01/10/2013 10:27:34
Build =0
[VarDefInfo]
[Setup]
Version=10.5
ShowCaption=1
BlockInput=0
Platform=*
[Requirements]
[Application]
ProductName=TEST
ProductNameShort=TEST
Version=1.0
Revision=0
DeveloperName=CC
SetupName=%ProductName%
UserKeyName=%DeveloperName%\%ProductName%
MachineKeyName=%DeveloperName%\%ProductName%\%Version%
UninstallKeyName=%DeveloperName% %ProductName% %Version%
UninstallDisplayName=[EMPIRUM] %ProductName%
UninstallDisplayIcon=C:\EmpirumAgent\User\Agent.ico
UninstallString=%ReinstallString% /U
ReinstallString="%CommonSetupDir%\Setup.exe" "%SRC%\%SetupInfDir%\Setup.inf"
ReinstallMode=0
HideUninstall=0
SrcDir=..
ApplicationDir=%ProgramFilesDir%\%ProductName%
SetupInfDir=Install
DataDir=%Personal%
Prompts=
AskUninstallOld=0
ShellLinks=1
CommonShellLinks=1
CreateUnresolvableShellLinks=1
UseStringSection=Strings:09
UseSysStringSection=SysStrings:09
DateWarning=0
SizeWarning=0
Reboot=2
PreventExternalReboot=1
StartServicesOnReboot=0
CallTimeOut=3600
AbortAfterCallTimeOut=1
DisableCancelButton=1
ShowEndMessage=0
[Strings:07]
Disk1=Installationsmedium 1
EndMessageDesc=Die Installation wurde erfolgreich abgeschlossen!
ErrorLogMessage=Die Installation/Deinstallation wurde mit einer Fehlermeldung abgebrochen!
InstallationFor=Installation f?r:
InstallerDesc=Dienstprogramm zum Installieren einzelner Komponenten.
InstallerName=Installationsprogramm
SetupWizard=Installations-Assistent
Uninstallation=deinstallieren
[Strings:09]
Disk1=Installation media 1
EndMessageDesc=Installation was completed successfully!
ErrorLogMessage=The installation/uninstallation aborted with an error message!
InstallationFor=Installation for:
InstallerDesc=Service program to install single components.
InstallerName=Setup program
SetupWizard=Installation Wizard
Uninstallation=Uninstallation
[SysStrings:07]
Users=Benutzer
[SysStrings:09]
Users=Users
[Environment]
CommonSetupDir=%CommonFilesDir%\Setup%SetupBits%
V_MachineValuesPath=\\%EmpirumServer%\Values$\MachineValues\%DomainName%
V_UserValuesPath=%HKLM,"Software\matrix42\Software Depot","HomeServer"%\Values$\UserValues\%UserDomain%
[Prompts]
[Services]
[Processes]
[EventSources]
[Encryption]
[Disks]
1=%Disk1%
[Options]
Installer = %InstallerName%, COPYALWAYS, Installer, "%InstallerDesc%"
Product = %ProductName%, COPYALWAYS, Product, "%ProductDesc%"
[Installer]
1:..\..\..\..\User\Setup.exe, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupDeu.chm, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupEnu.chm, %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\Mx42SynSem.dll, %System%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP WINDOWS32, 0
1:..\..\..\..\User\x64\Mx42SynSem.dll, %System%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP WINDOWS64, 0
1:%SetupInfDir%\Setup.inf, , NORMAL, 0
1:%Temp%\Setup64.exe, %CommonSetupDir%\Setup.exe, OPTIONAL NOSIZEWARNING SETUP ALWAYS WINDOWS64, 0
[Product]
#Set:Product, DONTDELETE
#Set:Remove, DELETE
[Set:Product]
; 1. Überprüfen ob "SW-Packages-old.ini" in Paketverzeichnis liegt und Installation starten
Set SWIniFile=[SW-Packages-old.ini]
Set SWIniPath=c:\EmpirumAgent\Packages\CC\%ProductName%\%SWIniFile%
Set ReadSWIni=C:\EmpirumAgent\Packages\CC\%Productname%\SW-Packages-old.ini
If DoesFileExist ("C:\EmpirumAgent\Packages\CC\%Productname%\SW-Packages-old.ini") == "1" Then "Product-Install" Else "NoSWPackagesOldIniFound" EndIf
[Product-Install]
; Da ini vorhanden ist, die Installation starten und alte Paketvorgänger RegKeys aus Variable "IniContent" löschen
Callhidden cmd /c Echo %SysDate% %SysTime% - %SWIniPath% was found and old Package Registry Keys can be deleted! > C:\temp\%ProductName%_%SWIniFile%_FOUND.log
set IniContent=ReadTextFile ("%ReadSWIni%")
Callhidden cmd /c Echo %SysDate% %SysTime% - Packages was been found in %SWIniFile% ! >> C:\temp\%ProductName%_%SWIniFile%_FOUND.log
<<<<<<<HIER MUSS DER AUFRUF REIN FÜR DIE INI ABARBEITUNG>>>>
CallHidden cmd /c "%SRC%\Ping2.cmd"
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
[NoSWPackagesOldIniFound]
; Wenn ini nicht vorhanden ist dann Error Log schreiben und Installation trotzdem starten
CallHidden cmd /c "%SRC%\Ping3.cmd"
Callhidden cmd /c Echo %SysDate%--%SysTime% - %SWIniPath% not found and old Package Registry Keys can not be deleted! > C:\temp\%ProductName%_%SWIniFile%_NOT-FOUND.log
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
[Set:Remove]
If %ErrorLevel% <> "0" Then "CheckForReboot" EndIf
-CallHidden cmd /c "%SRC%\uninstall.cmd"
[CheckForReboot]
If %ErrorLevel% == "3010" Then "RebootRequired" Else "SetupError" EndIf
[RebootRequired]
SetReboot 1
-SetReboot 1
[SetupError]
ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText%
Abort %ErrorText% %ErrorLevel% %CallingText%
-Abort %ErrorText% %ErrorLevel% %CallingText%
-ErrorLogMsg %ErrorText% %ErrorLevel% %CallingText%
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Die Ini Datei kann verschiedene Anzahl an Zeilen haben. Wird aber mit ziemlicher Sicherheit nicht mehr wie min. 10 bis max. 20 Zeilen habenr.wiegel wrote:Wie ist die Software.ini genau aufgebaut? Wie wird die erstellt? Ist die Anzahl der Datensätze bekannt?
Viele Grüße und danke schon mal an alle für das schnelle Feedback
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Hallo Herr AmbrosiusHendrik_Ambrosius wrote:Am schwierigsten ist hier das Auslesen der reinen ASCII-Datei.
Eventuell geht das per ReadTextFile und dann mit Tokenize, bin mir aber nicht sicher.
Könnte man nicht eine INI- oder XML-Datei als Basis nehmen?
Der Rest ist recht einfach:
FOR-NEXT-Schleife um durch die Werte durchzugehen, Aufruf der jeweiligen Sektionen ggf. mit "#!" statt "#" damit sie auch mehrfach angesprungen werden.
ReadTextFile ist bereits schon in Verwendung. Wo es aktuell habert ist einfach nur, dass jede Zeile einzeln abgearbeitet wird aus der Ini.
Hintergrund dazu: Pro Zeile steht ein Paketnamen, welcher wiederum genauso in der Registry aufzufinden ist unter HKLM\Software\CC\<<PAKETNAME>>.
Viele Grüße
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Dafür wie geschrieben eine FOR-NEXT-Schleife verwenden.
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Hätten Sie auch ein Beispiel für mich ?Hendrik_Ambrosius wrote:Dafür wie geschrieben eine FOR-NEXT-Schleife verwenden.
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Klar, habe einfach mal das aus der Anleitung genommen:
For <Var>,<LB>,<UB>,<Inc>,<Abschnitt>
Führt eine FOR-Schleife aus. Die Zählvariable ist <Var> wird von der Untergrenze <LB> zur Obergrenze <UB> in <Inc> Schritten hoch gezählt. Jedes Mal wird der Abschnitt <Abschnitt> aufgerufen. Die Zahlen dürfen auch negativ sein sowie Ober- und Untergrenze vertauscht werden (Abwärtsschleife). Wird <Inc> leer gelassen, wird 1 bzw. -1 angenommen.
Beispiel: For Counter,1,3,,UpSection
For <Var>,<LB>,<UB>,<Inc>,<Abschnitt>
Führt eine FOR-Schleife aus. Die Zählvariable ist <Var> wird von der Untergrenze <LB> zur Obergrenze <UB> in <Inc> Schritten hoch gezählt. Jedes Mal wird der Abschnitt <Abschnitt> aufgerufen. Die Zahlen dürfen auch negativ sein sowie Ober- und Untergrenze vertauscht werden (Abwärtsschleife). Wird <Inc> leer gelassen, wird 1 bzw. -1 angenommen.
Beispiel: For Counter,1,3,,UpSection
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
...oder auch z.B. in der setup.inf der Empirum Management Console:
FOR Counter,1,%NumberOfTokens%,1,CopyCreateConsoleExtensionResFiles
...
[CopyCreateConsoleExtensionResFiles]
Set ResLang = %%EmpResLanguages%Counter%%
ReplaceEnv ResLang
;Echo Language %Counter%: %ResLang%
...
FOR Counter,1,%NumberOfTokens%,1,CopyCreateConsoleExtensionResFiles
...
[CopyCreateConsoleExtensionResFiles]
Set ResLang = %%EmpResLanguages%Counter%%
ReplaceEnv ResLang
;Echo Language %Counter%: %ResLang%
...
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Verstehe ich das so richtig, das "counter" meine gesetzte variableHendrik_Ambrosius wrote:Klar, habe einfach mal das aus der Anleitung genommen:
For <Var>,<LB>,<UB>,<Inc>,<Abschnitt>
Führt eine FOR-Schleife aus. Die Zählvariable ist <Var> wird von der Untergrenze <LB> zur Obergrenze <UB> in <Inc> Schritten hoch gezählt. Jedes Mal wird der Abschnitt <Abschnitt> aufgerufen. Die Zahlen dürfen auch negativ sein sowie Ober- und Untergrenze vertauscht werden (Abwärtsschleife). Wird <Inc> leer gelassen, wird 1 bzw. -1 angenommen.
Beispiel: For Counter,1,3,,UpSection
ist ? Und 1 bedeutet ab 1. Zeile der Sektion beginnen mit der schleife und bei Zeile 3 aufhören ? Oder die gesamte Sektion 3 mal durchlaufen ? UpSection ist dann quasi meine gesetzte Selektion wo meine regkeys entfernt werden sollen ? Und ,, bedeutet in schritten ?
Nicht falsch verstehen aber mit PowerShell fällt mir da ganze ziemlich einfacher
LG und schönes Wochenende schon mal
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Counter: Ja.
Mit Zeilen hat das aber direkt nichts zu tun, die UpSection wird nur dreimal aufgerufen mit jeweils dem Counter-Wert.
Dort muss dann das Lesen der Zeile und das Löschen der RegKeys erfolgen.
Mit Zeilen hat das aber direkt nichts zu tun, die UpSection wird nur dreimal aufgerufen mit jeweils dem Counter-Wert.
Dort muss dann das Lesen der Zeile und das Löschen der RegKeys erfolgen.
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Um ehrlich zu sein hatte ich das ganze auch heute Mittag schon mal ausprobiert da ich es auch aus der doku entnommen hatte. Habe da nur rum experimentiert.... Was aber nicht ging das jedes Paket aus der ini der variableHendrik_Ambrosius wrote:Counter: Ja.
Mit Zeilen hat das aber direkt nichts zu tun, die UpSection wird nur dreimal aufgerufen mit jeweils dem Counter-Wert.
Dort muss dann das Lesen der Zeile und das Löschen der RegKeys erfolgen.
der schleife übergeben wurde, selbst wenn nur 1 Paket in der ini steht.
So würde ich es machen:
........
[Product-Install]
; Da ini vorhanden ist, die Installation starten und alte Paketvorgänger RegKeys aus Variable "IniContent" löschen
; Logfile schreiben
Callhidden cmd /c Echo %SysDate% %SysTime% - %SWIniPath% was found and old Package Registry Keys can be deleted! > C:\temp\%ProductName%_%SWIniFile%_FOUND.log
; For Schleife deklarieren
For Counter,1,3,1,DeleteRegKeys
[DeleteRegKeys]
; ini einlesen in variable
set IniContent=ReadTextFile ("%ReadSWIni%")
; logfile weiter beschreiben
Callhidden cmd /c Echo %SysDate% %SysTime% - Packages was been found in %SWIniFile% ! >> C:\temp\%ProductName%_%SWIniFile%_FOUND.log
;Alle Paketnamen welche durch ini ausgelesen wurden aus Reg löschen
-HKLM,"SOFTWARE\CC\%IniContent%"%Counter%
.......
Fehlt da jetzt noch was ? O_O
-
- Moderator
- Posts: 7965
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Weil wohl das zeilenweise Auslesen der Datei mit ReadTextFile nicht geht, wie ich schon ganz am Anfang schrieb.
Können Sie als Input keine INI- oder XML-Datei nehmen?
Dann wäre alles sehr einfach.
Können Sie als Input keine INI- oder XML-Datei nehmen?
Dann wäre alles sehr einfach.
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com
Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.
-
- Posts: 27
- Joined: 11. Sep 2012, 13:29
- Contact:
Re: Ini Datei einlesen und alle Zeilen einzeln abarbeiten
Hallo Herr ambrosius
Ich hatte extra von Anfang an mit einer Software.ini Datei gearbeitet So wie ich sie verstehe Soll ich readtextFile verwenden aber eine ini mit diesem befehl zeilenweise einlesen oder gibt es eine readini Funktion ?
Ist mein Setup.inf product-install argument richtig ?
Ich hatte extra von Anfang an mit einer Software.ini Datei gearbeitet So wie ich sie verstehe Soll ich readtextFile verwenden aber eine ini mit diesem befehl zeilenweise einlesen oder gibt es eine readini Funktion ?
Ist mein Setup.inf product-install argument richtig ?
Who is online
Users browsing this forum: No registered users and 1 guest