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

gelöst mehrere Zeilen auslesen und zu einer zusammenfassen

Mitglied: wickie666

wickie666 (Level 1) - Jetzt verbinden

07.02.2007, aktualisiert 18:55 Uhr, 4626 Aufrufe, 9 Kommentare

Ich möchte aus einer Textdatei die Zeileneinträge auslesen und diese in einer Variablen zwischenspeichern und dann mittels for-schleife in eine Textdatei schieben.

set line=
FOR /f "delims=" %%f IN (MODULES.txt) DO set line=%line% %%f
echo %line% >>sortiert.txt


Im Grunde nichts schweres, nur leider macht die for-schleife Probleme. Ich verstehe nicht, warum ich immer nur den letzten Eintrag der TXT Datei aufgelistet bekomme.
Also in wenn in der MODULES.txt die Eintrage
1
2
3
stehen, wird nur 3 in der sortiert.txt aufgeführt.
Ich will aber
1 2 3
dort stehen haben!
Wo liegt mein fehler?
Mitglied: bastla
07.02.2007 um 15:13 Uhr
Hallo wickie666!

So vielleicht:
01.
@echo off & setlocal EnableDelayedExpansion 
02.
set line= 
03.
FOR /f "delims=" %%f IN ('type "MODULES.txt"') DO set "line=!line! %%f" 
04.
echo %line%>>sortiert.txt
Mit dem "type" habe ich etwas Zusatzaufwand betrieben, um zB Pfadangaben mit Leerstellen unterbringen zu können - kannst Du auch wieder auf die Angabe des Dateinamens (aber ohne Anführungszeichen) reduzieren.

Grüße
bastla
Bitte warten ..
Mitglied: wickie666
07.02.2007 um 15:33 Uhr
super, das funktioniert.
Nun aber noch eine kleine frage, da ich nicht genau weiss, wie ich es angehen soll:
Wie kann ich nun jeweils nach 3 einträgen einen Zeilenumbruch erstellen?
in batch dateien kann man for schleifen doch nicht verschachteln, oder?
Bitte warten ..
Mitglied: bastla
07.02.2007 um 15:55 Uhr
Hallo wickie666!

Verschachteln ginge schon, Du könntest es aber auch so versuchen:
01.
@echo off 
02.
set line= 
03.
set /a count=0 
04.
FOR /f "delims=" %%f IN ('type "MODULES.txt"') DO call :ProcessLine "%%f" 
05.
(echo %line%)>>sortiert.txt 
06.
goto :eof 
07.
:ProcessLine 
08.
if %count%==0 goto :NewLine 
09.
set /a count+=1 
10.
If %count% GTR 3 goto :NewLine 
11.
set "line=%line% %~1" 
12.
goto :eof 
13.
:NewLine 
14.
If %count% neq 0 (echo %line%)>>sortiert.txt 
15.
set "line=%~1" 
16.
set /a count=1 
17.
goto :eof
Die Klimmzüge mit dem Überprüfen von %count% auf 0 verhindern, dass vor der ersten Zeile eine Leerstelle ausgegeben wird und die Klammern verhindern das am Ende der Zeile.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
07.02.2007 um 16:55 Uhr
Moin wickie666,

hmmm... ein bisschen angestrengt sehen diese Klimmzüge schon aus.

Eine Variation von bastla's Vorlage wäre:
01.
::----------snipp 3Lines2One.bat 
02.
@echo off &setlocal 
03.
set line= 
04.
set /a count=0 
05.
FOR /f "delims=" %%f IN ('type "MODULES.txt"') DO call :ProcessLine "%%f" 
06.
if [%line%] NEQ [] (echo %line%)>>sortiert.txt 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
set "line=%line% %~1" 
11.
set /a count+=1 
12.
set /a modrest=count%%3 
13.
If %modrest%==0 ( 
14.
    (echo %line%)>>sortiert.txt 
15.
    set Line= 
16.
)    
17.
goto :eof 
18.
::----------snipp 3Lines2One.bat
Ich hab dieses "Plus 1 und wenn = 3 dann wieder 0" jetzt mit der Modulo-Funktion versucht, etwas lesbarer zu machen.
Und, zweite Anmerkung, ich würde diese Umleitung nach sortiert.txt NICHT im Batch nach den ECHO-Befehlen machen, sondern im Batch nur ein "Echo %line%" behalten.
Und dann den Batch 3Lines2One.bat ggf. komplett umleiten.
3Lines2One >sortiert.txt

Gruss
Biber
Bitte warten ..
Mitglied: bastla
07.02.2007 um 17:33 Uhr
@Biber

Kommt mir das nur so vor, oder beginnen bei Deiner Lösung alle Ergebniszeilen mit einer Leerstelle (das zu vermeiden war eigentlich der Grund der kaum gewürdigten Anstrengung ?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
07.02.2007 um 18:06 Uhr
@bastla

Menno, man/frau kann sich auch anstellen... ist doch nur ein Batch..
01.
::----------snipp 3Lines2One.bat 
02.
@echo off &setlocal 
03.
set "line= " 
04.
set /a count=0 
05.
FOR /f "delims=" %%f IN ('type "MODULES.txt"') DO call :ProcessLine "%%f" 
06.
if "%line%" NEQ " " (echo %line%x) 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
set "line=%line%%~1" 
11.
set /a count+=1 
12.
set /a modrest=count%%3 
13.
If %modrest%==0 ( 
14.
    (echo %line%) 
15.
    set "Line= " 
16.
)    
17.
goto :eof 
18.
::----------snipp 3Lines2One.bat
[wirkt immer noch nicht angestrengt,,,,]

Grüße
Biber
Bitte warten ..
Mitglied: bastla
07.02.2007 um 18:42 Uhr
@Biber

Montag? Dann sag' ich jetzt nix mehr ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
07.02.2007 um 18:49 Uhr
...seit ich diesen ###-Job hier in diesem ver###ten ###snest habe, ist jeder Tag ein gefühlter Montag...

Das kannst Du auch nicht schlimmer werden lassen...
Bitte warten ..
Mitglied: bastla
07.02.2007 um 18:55 Uhr
@Biber
Das kannst Du auch nicht schlimmer werden lassen...
Soll keiner sagen, ich hätt's nicht versucht.

Sorry - bin momentan etwas hyperaktiv (Fieber hat nachgelassen, Lungenentzündung als "nur leicht" diagnostiziert) ...

Zonenrandgebiet
Noch länger?

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
In Batch mehrere Zeilen auslesen ?!?
gelöst Frage von JanInfoHDBatch & Shell2 Kommentare

Ich habe in Programm in Batch geschrieben, doch es ließt aus einer .txt-Datei immer nur die erste Zeile, Was ...

Datenbanken
SQL: 2 Zeilen zu einer zusammenfassen
gelöst Frage von philbo20Datenbanken11 Kommentare

Hallo zusammen, ich habe eine SQL-Server 2008 DB, wo ich eine Tabelle mit drei Spalten habe: Name, Berufswunsch1, Berufswunsch2 ...

VB for Applications

Zeilen zusammenfassen wenn eine der Zellen gleich ist

Frage von Benni5555VB for Applications2 Kommentare

Hallo zusammen, ich suche nach einer Lösung für mein Problem und bin "fast" fündig geworden. Mein Problem sieht wie ...

VB for Applications

Mehrzeilige Datenquelle in eine Zeile Zusammenfassen

gelöst Frage von aivilonVB for Applications7 Kommentare

Guten Tag Admins Ich stehe wieder mal mit Excel an. Und zwar habe ich folgende Ausgangslage: Ausgangslage In einem ...

Neue Wissensbeiträge
iOS
IOS 12.2 beta und OpenVPN iPad und iPhone
Erfahrungsbericht von magicteddy vor 3 StundeniOS

Moin, kleiner Hinweis an die experimentierfreudigen unter Euch: Bei der aktuellen beta gibt es ein Problem im Zusammenspiel zwischen ...

Vmware
VMware Tools 10.3 verfügbar
Information von sabines vor 7 StundenVmware

Eine Sicherheitslücke wird mit den Tools der Version 10.3 geschlossen, die Tools müssen auf jeder VM aktualisiert werden. Näheres ...

Apple

Apple aktualisiert MacBook Pro, mit bis zu sechs Kernen

Information von Vision2015 vor 2 TagenApple

Jawohlchen das Warten hat sich gelohnt :-) Apple aktualisiert MacBook Pro Frank

Verschlüsselung & Zertifikate

In-place Upgrade verschlüsselter Windows-Systeme mittels reflectdrivers

Tipp von DerWoWusste vor 4 TagenVerschlüsselung & Zertifikate1 Kommentar

Hinter diesem sperrigen Titel verbirgt sich die Info, dass offenbar seit Win10 v1607 im Windows-Setup (setup.exe der CD/des USB-Sticks) ...

Heiß diskutierte Inhalte
Microsoft
Dringend: Nach neustart kein zugriff mehr per RDP möglich - vermutlich wegen gelöschter SID in AD
gelöst Frage von sven784230Microsoft29 Kommentare

Hallo zusammen, gerade hat ein Server 2012 (terminalserver + Active directory) einen geplanten Neustart durchgeführt, wenn ich mich jetzt ...

Hardware
Alte Hardware verkaufen
Frage von Lebowski23Hardware21 Kommentare

Hallo, durch größere Umbauten haben einiges an Hardware "rumliegen", die wir vielleicht noch verkaufen wollen. Es sind so ca. ...

Exchange Server
Exchange 2013 - Update schlägt fehlt
gelöst Frage von chb1982Exchange Server20 Kommentare

Hallo zusammen, kann sich jemand einen Reim auf die unten stehenden Fehlermeldung machen? Sie tritt auf beim Update von ...

Windows Server
Active Directory Probleme DC sieht sich nicht selbst als DC DNS Fehler?
gelöst Frage von Cisco7971Windows Server15 Kommentare

Moin zusammen, Angefangen hat die Suche damit, dass der Anmeldedienst immer angehalten wird, bei einem Neustart des DC. nach ...