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
GELÖST

Zeilen sequentiell aus 3 Textdateien auslesen

Frage Entwicklung Batch & Shell

Mitglied: wickie666

wickie666 (Level 1) - Jetzt verbinden

08.02.2007, aktualisiert 19:10 Uhr, 5036 Aufrufe, 11 Kommentare

Ist es möglich aus 3 Textdateien sequentiell Zeilen auszulesen und die Strings in eine andere zu schreiben?
Ich habe drei Textdateien, die jeweils die identische anzahl an zeilen besitzen. die drei sollen so zusammengefügt werden, dass z.b. jeweils die erste zeile der 3 Dateien, zur ersten zeile der neuen txt zusammengefügt werden, dann die nächste usw.

Das auslesen von einer Textdatei und zusammenfügen von 3 hintereinanderfolgenden zeilen zu einer, habe ich hier schon beantwortet bekommen:

01.
@echo off 
02.
echo AREA Name DESC>sortiert.txt 
03.
set line= 
04.
set /a count=0 
05.
FOR /f "delims=" %%f IN ('type "MODULES_1.txt"') DO call :ProcessLine "%%f") 
06.
(echo %line%)>>sortiert.txt 
07.
goto :eof 
08.
:ProcessLine 
09.
if %count%==0 goto :NewLine 
10.
set /a count+=1 
11.
If %count% GTR 3 goto :NewLine 
12.
set "line=%line% %~1" 
13.
goto :eof 
14.
:NewLine 
15.
If %count% neq 0 (echo %line%)>>sortiert.txt 
16.
set "line=%~1" 
17.
set /a count=1 
18.
goto :eof

, aber das schaff ich nun mal nicht ohne hilfe. Kann ich auf oben genannten code aufsetzen?
Ich hab keine idee ...

[Edit Biber] Formatierung auf <code> gesetzt [/Edit]
Mitglied: bastla
08.02.2007 um 06:39 Uhr
Hallo wickie666!

Kann ich auf oben genannten code aufsetzen?
Das wird so nicht gehen.

Vielleicht erklärst Du kurz, was Du eigentlich vor hast (ob der Vorgang regelmäßig und vollautomatisch ablaufen soll, und auch, was mit der Ergebnisdatei geschehen soll - werden zB Trennzeichen wie ";" oder "," benötigt, ...). Weiters nicht ganz unwichtig ist der Inhalt der Ausgangsdateien - etwa, ob sie Anführungszeichen enthalten.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
08.02.2007 um 07:01 Uhr
Moin wickie666,

klar kannst Du auf die im anderen Beitrag geposteten Skizzen aufsetzen.
Da sich bis jetzt aber nicht erkennen lässt, was denn genau Dein Plan bzw. der Sinn vons Ganze sein soll, verzichte ich jetzt mal auf jegliche Flexibitität der Lösung und gehe davon aus:
- es existieren im aktuellen Verzeichnis drei Dateien Modules_1.txt, Modules_2.txt, Modules_3.txt
- die Einzelzeilen werden einfach durch ein Leerzeichen getrennt aneinandergereiht
- das gemergete Ergebnis wird auf den Bildschirm ausgegeben - wie Du es in eine Datei umlenken kannst, steht ja im Parallelthread.

01.
::----------snipp Merge3Modules2One.bat 
02.
@echo off &setlocal 
03.
findstr /n . Modules_1.txt modules_2.txt modules_3.txt|sort /+14>%temp%\input.txt 
04.
set "line=" 
05.
set /a count=0 
06.
FOR /f "tokens=3 delims=:" %%f IN ('type "%temp%\input.txt"') DO call :ProcessLine "%%f" 
07.
if "%line%" NEQ "" (echo %line%) 
08.
del %temp%\input.txt 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
set "line=%line% %~1" 
13.
set /a count+=1 
14.
set /a modrest=count%%3 
15.
If %modrest%==0 ( 
16.
    (echo %line:~1%) 
17.
    set "Line=" 
18.
)    
19.
goto :eof 
20.
::----------Merge3Modules2One.bat
Inhalte der Datei Modules_1.txt (Modules_2 und ~_3 ist analog)
01.
Modules_1 erste zeile 
02.
Modules_1 zeile zwei 
03.
Modules_1 noch eine Zeile 
04.
Modules_1 vierte zeile - reicht zum testen
Aufruf am CMD-Prompt:
01.
>Merge3Modules2One.bat 
02.
Modules_1 erste zeile Modules_2 erste zeile Modules_3 erste zeile 
03.
Modules_1 zeile zwei Modules_2 zeile zwei Modules_3 zeile zwei 
04.
Modules_1 noch eine Zeile Modules_2 noch eine Zeile Modules_3 noch eine Zeile 
05.
Modules_1 vierte zeile - reicht zum testen Modules_2 vierte zeile - reicht zum testen Modules_3 vierte zeile - reicht zum testen
Den anderen Thread schliesse ich mal und setz ihn auf "gelöst".

Wäre nett, wenn Du erstmal Deinen Plan erläuterst... wieso und woher gibt es denn drei Modules_X.txt mit exakt gleicher Zeilenanzahl und wozu müssen die zusammengemanscht werden? Just for educational purposes?

Gruss
Biber
[Edit] Moin bastla,
sorry hatte Dich nicht gesehen, als ich mit Tippseln anfing...
Aber den tieferen Sinn der Manscherei verstehe ich genausowenig wie Du..
[/Edit]
Bitte warten ..
Mitglied: wickie666
08.02.2007 um 09:38 Uhr
gerade um den cmd aufruf geht es mir.
Da es immer unterschiedlich viele Zeilen sind (im normalfall mehrere hundert) ist der aufruf nicht wirklich einsatzfähig. geht das auch anders?
Danach behellige ich euch auch nicht mehr


[Edit]
Die Anwendung ist doch etwas sehr spezielles(wie ihr wohl gemerkt habt). Soll zugeschnitten werden auf eine firmeneigene Software, die ermöglicht gewisse informationen sequentiell in Textdateien auszugeben, nur leider gehören diese Informationen zusammen und eine Art tabellarische Aufstellung wäre nicht verkehrt(es wird in mehrere Textdateien aufgeteilt, da diese auch wieder zur weiterverarbeitung benutzt werden).
Warum das so gemacht wurde? Frag mich nicht... Bin nicht in der entwicklergruppe drin. Und die amis ändern wegen uns nichts ab.
Bitte warten ..
Mitglied: bastla
08.02.2007 um 10:06 Uhr
Hallo wickie666!

Danach behellige ich euch auch nicht mehr
"Behelligung" ist nicht das Thema (es zwingt mich ja niemand, Dir zu antworten), sondern zB die Frage, ob nicht vielleicht die Verwendung eines anderen Werkzeugs (etwa VBScript) oder ein anderer Lösungsweg (Zusammenfügen in Excel?) vorteilhafter wäre - und natürlich macht's mehr Sinn, nicht auf Verdacht eine Lösung zu entwickeln, die dann aufgrund vorher nicht bekannt(gegeben)er Vorgaben nicht einsetzbar ist.
Anyhow - ein etwas weniger "morgendlicher" Ansatz zu Biber's Vorlage:
01.
@echo off & setlocal 
02.
set "in=%temp%\input.txt" 
03.
if exist "%in%" del "%in%" 
04.
set /a FileNr=1000 
05.
for %%d in (%*) do call :ProcessFile "%%~d" 
06.
set /a NumberOfFiles=%FileNr%-1000 
07.
goto :MergeEm 
08.
:ProcessFile 
09.
set /a FileNr+=1 
10.
set /a LineNr=10000000 
11.
for /f "delims=" %%i in ('type %1') do call :outLine "%%i" 
12.
goto :eof 
13.
:outLine 
14.
set /a LineNr+=1 
15.
(echo %LineNr%-%FileNr%:%~1)>>"%in%" 
16.
goto :eof 
17.
:MergeEm 
18.
set "line=" 
19.
set /a count=0 
20.
FOR /f "tokens=2 delims=:" %%f IN ('sort "%in%"') DO call :ProcessLine "%%f" 
21.
if "%line%" NEQ "" (echo %line%) 
22.
del "%in%" 
23.
goto :eof 
24.
:ProcessLine 
25.
set "line=%line% %~1" 
26.
set /a count+=1 
27.
set /a modrest=count%%%NumberOfFiles% 
28.
If %modrest%==0 ( 
29.
    (echo %line:~1%) 
30.
    set "Line=" 
31.
)
Aufruf mit:
01.
Merge.bat M1.txt M2.txt M3.txt > Ergebnis.txt
Grüße
bastla

[Edit] In Zeile for %%d in (%*) do call :ProcessFile "%%~d" ~ ergänzt [/Edit]
Bitte warten ..
Mitglied: wickie666
08.02.2007 um 10:22 Uhr
So, jetzt habt ihr es geschafft, ich versteh nix mehr.
Ich kann nicht nachvollziehen, warum bei mir nur eine leere textdatei rauskommt

P.S.:
Mir war schon klar, dass ihr mir gerne antwortet.
Ich hätte übrigens gerne ein VBScript geschrieben, aber unsere SW wird in chemieanlagen eingesetzt und ist somit eine hochkritische Anwendung, mit der restriktive, dass (so gut wie) keine andere Software neben ihr erlaubt wird. Wie die Bibel schon sagt:Du sollst keine anderen Götter neben mir haben.
Bitte warten ..
Mitglied: bastla
08.02.2007 um 10:58 Uhr
Hallo wickie666!

Kleine Änderung in Zeile
01.
for %%d in (%*) do call :ProcessFile "%%~d"
bereits oben eingearbeitet - wie ist es damit?

Grüße
bastla
Bitte warten ..
Mitglied: wickie666
08.02.2007 um 11:06 Uhr
nein, funktioniert leider immer noch nicht.
läuft das Skript denn bei dir korrekt?
Bitte warten ..
Mitglied: bastla
08.02.2007 um 11:14 Uhr
Hallo wickie666!

Bei mir tut's, was es soll (wenn ich gänzlich Ungetestetes poste, vermerke ich das).

Reduziere einfach einmal die erste Zeile auf "setlocal". Damit wird in der Ergebnisdatei jeder Arbeitsschritt angezeigt, bevor er ausgeführt wird (und natürlich auch dessen Ergebnis). Vielleicht nimmst Du zum Testen nur jeweils 10 Zeilen Deiner Testdateien ...

Grüße
bastla
Bitte warten ..
Mitglied: wickie666
08.02.2007 um 11:46 Uhr
Ich hab die input datei nicht löschen lassen, hier scheint noch alles i.O.:

10000001-1001:0
10000002-1001:1
10000003-1001:2
10000004-1001:3
10000005-1001:4
10000006-1001:5
10000007-1001:6
10000008-1001:7
10000009-1001:8
10000010-1001:9
10000001-1002:TESTER
10000002-1002:asfj
10000003-1002:asdf
10000004-1002:asdfasfd
10000005-1002:asdf
10000006-1002:asfd
10000007-1002:asdf
10000008-1002:asdf
10000009-1002:asdf
10000010-1002:asfd
10000001-1003:Control Module
10000002-1003:Control Module
10000003-1003:Control Module
10000004-1003:Control Module
10000005-1003:Control Module
10000006-1003:Control Module
10000007-1003:Control Module
10000008-1003:Control Module
10000009-1003:Control Module
10000010-1003:Control Module

Aber trotzdem ein leeres ergebnis.txt

Also als Ergebnis bekomme ich folgendes, wenn ich echo off rausnehme:


C:\Sonstiges\ge>setlocal

C:\Sonstiges\ge>set "in=C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>if exist "C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt" del "C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>set /a FileNr=1000

C:\Sonstiges\ge>for %d in (M1.txt M2.txt M3.txt) do call :ProcessFile "%~d"

C:\Sonstiges\ge>call :ProcessFile "M1.txt"

C:\Sonstiges\ge>set /a FileNr+=1

C:\Sonstiges\ge>set /a LineNr=10000000

C:\Sonstiges\ge>for /F "delims=" %i in ('type "M1.txt"') do call :outLine "%i"

C:\Sonstiges\ge>call :outLine "0"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000001-1001:0 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "1"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000002-1001:1 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "2"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000003-1001:2 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "3"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000004-1001:3 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "4"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000005-1001:4 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "5"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000006-1001:5 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "6"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000007-1001:6 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "7"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000008-1001:7 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "8"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000009-1001:8 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "9"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000010-1001:9 ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :ProcessFile "M2.txt"

C:\Sonstiges\ge>set /a FileNr+=1

C:\Sonstiges\ge>set /a LineNr=10000000

C:\Sonstiges\ge>for /F "delims=" %i in ('type "M2.txt"') do call :outLine "%i"

C:\Sonstiges\ge>call :outLine "TESTER"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000001-1002:TESTER ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asfj"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000002-1002:asfj ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdf"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000003-1002:asdf ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdfasfd"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000004-1002:asdfasfd ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdf"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000005-1002:asdf ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asfd"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000006-1002:asfd ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdf"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000007-1002:asdf ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdf"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000008-1002:asdf ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asdf"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000009-1002:asdf ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "asfd"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000010-1002:asfd ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :ProcessFile "M3.txt"

C:\Sonstiges\ge>set /a FileNr+=1

C:\Sonstiges\ge>set /a LineNr=10000000

C:\Sonstiges\ge>for /F "delims=" %i in ('type "M3.txt"') do call :outLine "%i"

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000001-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000002-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000003-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000004-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000005-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000006-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000007-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000008-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000009-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>call :outLine "Control Module"

C:\Sonstiges\ge>set /a LineNr+=1

C:\Sonstiges\ge>(echo 10000010-1003:Control Module ) 1>>"C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>goto :eof

C:\Sonstiges\ge>set /a NumberOfFiles=1003-1000

C:\Sonstiges\ge>goto :MergeEm

C:\Sonstiges\ge>set "line="

C:\Sonstiges\ge>set /a count=0

C:\Sonstiges\ge>FOR /F "tokens=2 delims=:" %f IN ('sort "C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"') DO call :ProcessLine "%f"

C:\Sonstiges\ge>if "" NEQ "" (echo )

C:\Sonstiges\ge>rem del "C:\DOKUME~1\MWIKTO~1\LOKALE~1\Temp\input.txt"

C:\Sonstiges\ge>goto :eof
Bitte warten ..
Mitglied: bastla
08.02.2007 um 14:50 Uhr
Hallo wickie666!

Ich nehme an, Du wirst folgendes Ergebnis spannend finden:
01.
<Z:\>type merge.bat 
02.
@echo off & setlocal 
03.
set "in=%temp%\input.txt" 
04.
if exist "%in%" del "%in%" 
05.
set /a FileNr=1000 
06.
for %%d in (%*) do call :ProcessFile "%%~d" 
07.
set /a NumberOfFiles=%FileNr%-1000 
08.
goto :MergeEm 
09.
:ProcessFile 
10.
set /a FileNr+=1 
11.
set /a LineNr=10000000 
12.
for /f "delims=" %%i in ('type %1') do call :outLine "%%i" 
13.
goto :eof 
14.
:outLine 
15.
set /a LineNr+=1 
16.
(echo %LineNr%-%FileNr%:%~1)>>"%in%" 
17.
goto :eof 
18.
:MergeEm 
19.
set "line=" 
20.
set /a count=0 
21.
FOR /f "tokens=2 delims=:" %%f IN ('sort "%in%"') DO call :ProcessLine "%%f" 
22.
if "%line%" NEQ "" (echo %line%) 
23.
del "%in%" 
24.
goto :eof 
25.
:ProcessLine 
26.
set "line=%line% %~1" 
27.
set /a count+=1 
28.
set /a modrest=count%%%NumberOfFiles% 
29.
If %modrest%==0 ( 
30.
    (echo %line:~1%) 
31.
    set "Line=" 
32.
33.
<Z:\>type M1.txt 
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<Z:\>type M2.txt 
45.
TEST 
46.
asfj 
47.
asdf 
48.
asdfasfd 
49.
asdf 
50.
asfd 
51.
asdf 
52.
asdf 
53.
asdf 
54.
asfd 
55.
<Z:\>type M3.txt 
56.
Control Module 
57.
Control Module 
58.
Control Module 
59.
Control Module 
60.
Control Module 
61.
Control Module 
62.
Control Module 
63.
Control Module 
64.
Control Module 
65.
Control Module 
66.
<Z:\>merge.bat M1.txt M2.txt M3.txt 
67.
0 TEST Control Module 
68.
1 asfj Control Module 
69.
2 asdf Control Module 
70.
3 asdfasfd Control Module 
71.
4 asdf Control Module 
72.
5 asfd Control Module 
73.
6 asdf Control Module 
74.
7 asdf Control Module 
75.
8 asdf Control Module 
76.
9 asfd Control Module 
77.
 
78.
<Z:\>
Also nächster Versuch - nimm ersatzweise die folgende Zeile rein:
01.
FOR /f "tokens=2 delims=:" %%f IN ('type "%in%" ^|sort') DO call :ProcessLine "%%f"
Grüße
bastla
Bitte warten ..
Mitglied: wickie666
08.02.2007 um 19:10 Uhr
ah, jetzt klappt es! vielen dank!!
Läuft genauso wie ich es haben wollte.

gruß
wickie
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...