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

Frage Entwicklung Batch & Shell

Mitglied: wickie666

wickie666 (Level 1) - Jetzt verbinden

07.02.2007, aktualisiert 18:55 Uhr, 4612 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
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 3 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 4 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1010 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
Frage von CenuzeNetzwerkgrundlagen10 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
Frage von Z3R0C0MM4N0THiN6Windows Server9 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...