Hochzählen einer Variable und Anhängen an eine zuvor zu bestimmende Anzahl von Zeilen in einer Textdatei
Hallo liebes Forum!
Ich bin nun schon einige Tage und Wochen auf der Suche nach der optimalen Lösung für mein (lächerliches) Problem und kann weder mit Google noch mit der Forumssuche etwas passendes finden:
Was meine Batch (entweder als Schleife oder wenn das nicht gehen sollte als Einzelaufrufe) tun soll ist folgendes:
1. aus einer bestehenden Textdatei Strings mit einer festen Länge von 36 Zeichen auslesen und deren Anzahl feststellen
diese sind zeilenweise angeordnet also etwa so:
S-ID-7576576586758675867
S-ID-7576576586758675868
S-ID-7576576586758675869
S-ID-7576576586758675870
usw.usw.
2. anschließend Durchnummerieren (oder auch hochzählen) und Anhängen mit einem Wort und einem "=" davor also quasi folgendermaßen:
computer1=S-ID-7576576586758675867
computer2=S-ID-7576576586758675868
computer3=S-ID-7576576586758675869
computer4=S-ID-7576576586758675870
usw.usw.
3. dieses Stringkuddelmuddel wieder zeilenweise in eine andere Textdatei schreiben (genauso wie in Schritt 2 also)
Meine erbärmlichen Versuche trau ich mich gar nicht herzeigen... hab es mit einer (einzigen) FOR-Schleife versucht, weil ich kein Plan hab, wie ich die Zeilen einzeln nacheinander ansprechen kann also ohne FOR-Schleife, was dann wohl die Holzhackermethode wäre...
Auch wie ich einer FOR-Schleife sagen kann, dass sie ihren Output jeweils in eine neue Textdatei schreiben soll (also pro textdatei nur ein string der dann für mich als Batchnoob leichter auszulesen wäre) ist mir völlig schleierhaft
Ist (nur so ne Idee) aber wahrscheinlich auch nicht zielführend, weils das selbe problem ist nur halt pferd-von-hinten-aufgesattelt
Kann man evtl. zu diesem Zweck einfach mehrere FOR-Schleifen aneinanderhängen um alles in einem Schritt zu erledigen? Oder geht das gar nicht mit Batch zu lösen?
Auf eure Hilfe hofft inständig
dergandralf
Greetz @all
Ich bin nun schon einige Tage und Wochen auf der Suche nach der optimalen Lösung für mein (lächerliches) Problem und kann weder mit Google noch mit der Forumssuche etwas passendes finden:
Was meine Batch (entweder als Schleife oder wenn das nicht gehen sollte als Einzelaufrufe) tun soll ist folgendes:
1. aus einer bestehenden Textdatei Strings mit einer festen Länge von 36 Zeichen auslesen und deren Anzahl feststellen
diese sind zeilenweise angeordnet also etwa so:
S-ID-7576576586758675867
S-ID-7576576586758675868
S-ID-7576576586758675869
S-ID-7576576586758675870
usw.usw.
2. anschließend Durchnummerieren (oder auch hochzählen) und Anhängen mit einem Wort und einem "=" davor also quasi folgendermaßen:
computer1=S-ID-7576576586758675867
computer2=S-ID-7576576586758675868
computer3=S-ID-7576576586758675869
computer4=S-ID-7576576586758675870
usw.usw.
3. dieses Stringkuddelmuddel wieder zeilenweise in eine andere Textdatei schreiben (genauso wie in Schritt 2 also)
Meine erbärmlichen Versuche trau ich mich gar nicht herzeigen... hab es mit einer (einzigen) FOR-Schleife versucht, weil ich kein Plan hab, wie ich die Zeilen einzeln nacheinander ansprechen kann also ohne FOR-Schleife, was dann wohl die Holzhackermethode wäre...
Auch wie ich einer FOR-Schleife sagen kann, dass sie ihren Output jeweils in eine neue Textdatei schreiben soll (also pro textdatei nur ein string der dann für mich als Batchnoob leichter auszulesen wäre) ist mir völlig schleierhaft
Ist (nur so ne Idee) aber wahrscheinlich auch nicht zielführend, weils das selbe problem ist nur halt pferd-von-hinten-aufgesattelt
Kann man evtl. zu diesem Zweck einfach mehrere FOR-Schleifen aneinanderhängen um alles in einem Schritt zu erledigen? Oder geht das gar nicht mit Batch zu lösen?
Auf eure Hilfe hofft inständig
dergandralf
Greetz @all
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126762
Url: https://administrator.de/forum/hochzaehlen-einer-variable-und-anhaengen-an-eine-zuvor-zu-bestimmende-anzahl-von-zeilen-in-einer-textdatei-126762.html
Ausgedruckt am: 30.04.2025 um 11:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo dergandralf und willkommen im Forum!
Wenn die erste Textdatei tatsächlich nur zeilenweise die "S-ID-..."-Einträge enthalten sollte, könnte (direkt von der Kommandozeile, im Batch jeweils mit %%i bzw %%j geschrieben) das so gehen:
Falls außer den "S-ID-..."-Zeilen noch andere Zeilen in der "Ein.txt" stünden, dann etwa so (als Batch):
Grüße
bastla
Wenn die erste Textdatei tatsächlich nur zeilenweise die "S-ID-..."-Einträge enthalten sollte, könnte (direkt von der Kommandozeile, im Batch jeweils mit %%i bzw %%j geschrieben) das so gehen:
for /f "tokens=1* delims=:" %i in ('findstr /n "^" "Ein.txt"') do >>"Aus.txt" echo computer%i=%j
@echo off & setlocal enabledelayedexpansion
set "Ein=D:\Ein.txt"
set "Aus=D:\Aus.txt"
set /a Nr=1
if exist "%Aus%" del "%Aus%"
for /f "delims=" %%i in ('findstr /b "S-ID-" "%Ein%"') do (
>>"%Aus%" echo computer!Nr!=%%i
set /a Nr+=1
)
bastla
Hallo Dergandalf
Edit: Start
Guck mal lieber was Bastla da geschrieben hat, das wird viel wahrscheinlicher funktionieren als meins... obwohl, schon recht ähnlich
Edit: Ende
Also ich habe selber kaum Erfahrung mit Batch und sitze zudem an meiner Linuxbox - also nix mit Batch.
Trotzdem möchte ich versuchen dir zu helfen, auch wenn ich meinen Vorschlag nicht testen kann (und es evtl. auch einfacher geht). Wie dem auch sei, solange kein anderer zur Hilfe eilt, versuch doch mal folgendes:
Das sollte dir bei der Ausführung der Batch Zeilen wie du sie in der neuen Datei haben möchtest auf die Ausgabe zaubern (erstmal).
Wenn es das sogar tut, dann tausche die Zeile 5 mit dier aus:
Die Ausgabe des "echo's" wird dann in die genannte Datei umgeleitet und immer ans Ende angehangen.
So, jetzt heisst es Daumendrücken und hoffen das es funktioniert - oder schnell wer anderes kommt.
Schönen Gruß
~Arano
Edit: Start
Guck mal lieber was Bastla da geschrieben hat, das wird viel wahrscheinlicher funktionieren als meins... obwohl, schon recht ähnlich
Edit: Ende
...Lösung für mein (lächerliches) Problem...
Scheint ja, zumindest für dich, nicht so lächerlich zu sein ;)Also ich habe selber kaum Erfahrung mit Batch und sitze zudem an meiner Linuxbox - also nix mit Batch.
Trotzdem möchte ich versuchen dir zu helfen, auch wenn ich meinen Vorschlag nicht testen kann (und es evtl. auch einfacher geht). Wie dem auch sei, solange kein anderer zur Hilfe eilt, versuch doch mal folgendes:
@echo off & setlocal EnableDelayedExpansion
set counter=1
for /f %%i in (c:\text.txt) do (
echo Computer%counter%=%%i
set /A counter=!counter!+1
)
Wenn es das sogar tut, dann tausche die Zeile 5 mit dier aus:
echo Computer%counter%=%%i >>neueText.txt
So, jetzt heisst es Daumendrücken und hoffen das es funktioniert - oder schnell wer anderes kommt.
Schönen Gruß
~Arano