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
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, 4159 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
Batch & Shell
gelöst Mittels Batch eine Uhrzeit aus einer .txt auslesen und verabeiten (4)

Frage von Beatzler zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Zeiten in .txt datei auslesen und Differenz berechnen (14)

Frage von meex87 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(11)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Dir tc Befehl unter Windows 10 macht Probleme (14)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server Komplettspiegelung (13)

Frage von pdiddo zum Thema Windows Server ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...