Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
Kommentar vom Moderator Biber am 05.04.2010 um 21:55:21 Uhr
Zwei klar vor- und ausgezeichnete Lösungsansätze - Beitrag auf "Beantwortet" gesetzt.
GELÖST

Inhalt einer txt auslesen und bei übereinstimmung Zeilen aus andered Datei einfügen

Frage Entwicklung Batch & Shell

Mitglied: connecthor

connecthor (Level 1) - Jetzt verbinden

02.04.2010, aktualisiert 05.04.2010, 4166 Aufrufe, 11 Kommentare

Hallo @all

ich hätte da ein kleines Problemchen--->

also ich hab da eine Datei in der ein Wert (z.b. [profil=0]) steht. Danach stehen noch ein paar andere Werte. Ich möchte danach noch weitere einträge einfügen. Das klappt schon.
Nun das echte Problem. Ich habe 2 unterschiedliche Einträge zu machen, je nach dem in welcher reihenfolge der user sich die Dateien installiert.

Hauptdatei <<<

[profil=0]
zeile1
zeile2
zeile3


dann soll sich der user ein programm installieren und in der Hauptdatei soll ein wert eingtragen werden wie folgt:

[profil=1]
zeile1
zeile2
zeile3

dann gibt es weitere programme die installiert werden können. Leider muss der Wert [profil] IMMER im Format
[profil=0]
...
[profil=1]
...
[profil=2]
...

vorliegen.

Was muss ich machen, um den schon installierten passus " [profil=*] auszulesen und bei weiteren installationen im richtigen format in der Datei zu hinterlegen??

Vielen Dank für eure Hilfe
Mitglied: bastla
02.04.2010 um 20:34 Uhr
Hallo connecthor!

Ließe sich Deine Problemstellung auf "Finde die niedrigste noch nicht in '[profil=Zahl]' enthaltene Zahl!" reduzieren?

In diesem Fall etwa so:
01.
@echo off & setlocal 
02.
set "Datei=D:\Die.ini" 
03.
set /a Nr=0 
04.
 
05.
:Loop 
06.
findstr /i /l "[profil=%Nr%]" "%Datei%">nul || goto :Found 
07.
set /a Nr+=1 
08.
goto :Loop 
09.
 
10.
:Found 
11.
set "Wert=[profil=%Nr%]" 
12.
echo %Wert%
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
04.04.2010 um 19:16 Uhr
Hallo Bastla,

mit nur einem findstr und Vergleich der Nr dürfte das doch effizienter sein.
(auch wenn das in diesem Fall egal ist)

01.
@echo off & setlocal EnableDelayedExpansion 
02.
set "Datei=c:\Test\2010-04\Die.ini" 
03.
Set Nr=0 
04.
For /f "tokens=2 delims=[=]" %%A in ( 
05.
  'findstr /i /l "[profil=" "%Datei%"' 
06.
    ) Do If %%A GTR !Nr! Set Nr=%%A 
07.
set /a Nr+=1 
08.
set "Wert=[profil=%Nr%]" 
09.
echo %Wert%
Gruß
LotPings

Edit: Anregung von Bastla eingearbeitet
Bitte warten ..
Mitglied: bastla
04.04.2010 um 20:15 Uhr
Hallo LotPings!

Gute Idee , handwerklich fehlt allerdings "delayedExpansion" - es wird dadurch in der aktuellen Fassung immer "GTR 0" verglichen, was auch gut geht, wenn die Nummern innerhalb der ".ini"-Datei brav aufsteigend verwendet wurden; dann allerdings wäre der Vergleich überhaupt unnötig, und es müsste einfach die letzte vorkommende Nummer um 1 erhöht werden.

Eine Abwandlung davon - nämlich tatsächlich die ".ini" vorweg zu sortieren - würde aber daran scheitern, dass die Nummern keine feste Stellenanzahl haben.

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
05.04.2010 um 17:46 Uhr
Zitat von bastla:
Gute Idee , handwerklich fehlt allerdings "delayedExpansion"

Du hast ja sowas von Recht
Danke, habe es schon geändert

Ostergrüße
LotPings
Bitte warten ..
Mitglied: connecthor
08.04.2010 um 18:50 Uhr
Ja, so hab ich mir das gedacht. Profile=0 ist standard. hinzu sollen dann immer profile=1 usw. egal in welcher reichenfolge die programme installiert werden. ich werds mal gleich testen... danke schon mal im vorraus
Bitte warten ..
Mitglied: connecthor
13.04.2010 um 10:58 Uhr
ich habs jetzt... BASTLA hatte die beste (einzige lösung)
LotPings lösung war noch nicht ganz vollständig... es wurde das [profil=x] nicht um eins erhöht.

mein script sieht jetzt so aus:
set "User=%USERPROFILE%"
set "Datei=%USER%\anwendungsdaten\info.ini"
findstr /l "umb-storno" "%Datei%" && goto copy

set /a Nr=0
:Loop
findstr /i /l "[profile%Nr%]" "%Datei%">nul || goto :Found
set /a Nr+=1
goto :Loop

:Found
set "Wert=[profile%Nr%]"
echo. >> "%Datei%"
echo %Wert% >> "%Datei%"
more "d:\dazu.txt" >> "%Datei%"

:copy
...

vieken dank für eure hilfe jungs!!!!
Bitte warten ..
Mitglied: LotPings
13.04.2010 um 11:49 Uhr
Zitat von connecthor:
ich habs jetzt... BASTLA hatte die beste (einzige lösung)
LotPings lösung war noch nicht ganz vollständig... es wurde das [profil=x] nicht um eins erhöht.

Protest,
entsprechend deinen Vorgaben funktioniert das hier.
Hast du den letzten Stand berücksichtigt?
Zeile 7 erhöht die höchste gefundene Profil Nr um eins.

Damit meine Variante auch bei leerer Datei funktioniert, könnte man noch Zeile 3 ändern in:
Set Nr=-1
Gruß
LotPings
Bitte warten ..
Mitglied: connecthor
15.04.2010 um 10:25 Uhr
hab dein script probiert...
leider hat er immer nur [profile=1] eingefügt... keine ahnung warum.
hast du das mal getestet???
Bitte warten ..
Mitglied: LotPings
15.04.2010 um 12:11 Uhr
Ja, ich habs nochmal getestet.
Einzige Änderung in Zeile 3 auf -1, (Der alte Beitrag lässt sich mehr editieren).

Ich vermute mal einen Übertragungsfehler - bitte "in den Speicher kopieren" oder Quelltext ansehen+kopieren.
Computer sind ja so schrecklich konsequent - tun genau das und nur das, was ihnen vorgegeben wird.

Gruß
LotPings
Bitte warten ..
Mitglied: connecthor
16.04.2010 um 09:29 Uhr
dann mach ich irgendwas falsch..
das [profil=0] ist standard.
bei dir wird doch nur soweit ich sehe der erste gefundene wert genommen und +1 gesetzt.
da ist dann egal welche werte da noch stehen... oder?!?!?!
Bitte warten ..
Mitglied: LotPings
16.04.2010 um 09:50 Uhr
Moin moin,

nein Zeile 4-6 ist eine Schleife die alle gefundenen "[profil="-Zeilem mit dem vorherigen Maximalwert vergleicht und ihn ggfs ersetzt.
Man kann diese 3 Zeilen auch ohne Änderung der Funktion hinereinander in eine Zeile schreiben, ich finde es so halt übersichtlicher.

Gruß
LotPings
Bitte warten ..
Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Installation
gelöst Mit Powershell in einer Datei eine Zeile auslesen (6)

Frage von Bommi1961 zum Thema Installation ...

Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Humor (lol)

Wo ist der Fehler auf dem Bild?

(4)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Proxy Server Settings Cloud + EWS (17)

Frage von SomebodyToLove zum Thema Exchange Server ...

Windows Server
PDF Editor für den Einsatz auf Terminal Servern (16)

Frage von kwame501 zum Thema Windows Server ...

Windows Installation
Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen (14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Virtualisierung
Unterschied zwischen VDI und Terminal Server Lösungen (13)

Frage von tukawi06 zum Thema Virtualisierung ...