
94451
13.10.2010, aktualisiert um 07:13:01 Uhr
Bestimmte zeilen aus batchdatei speichern
Hallo Ihr, ich bin neu hier und kommen mit den gegebenen informationen leider nicht sehr weit,... ich bin anfänger in diesen gebiet,... und hoffe auf eure hilfe,...
ich möchte gerne aus Textdateien bestimmte informationen rausholen und listen,...
mein letztendliches projekt wird so aussehen,...
ich hab ne Haupttextdatei in der stehen (vorerst) drei überpunkte:
[PUNKT1]
0001000
0001010
0001020
[PUNKT2]
0002000
0002010
[PUNKT3]
0003000
jeder überpunkt beschreibt einen ordner (diese Punkte heißen nicht PUNKT sondern z.B. Software), wenn ich fertig bin möchte ich gerne nen ordner anlegen also PUNKT1 und dann kopiere ich die daten aus dem ordner H:\0001000 dann dem ordner H:\0001010 und dann 0001020 dannn gibts wieder nen neuen überordner mit PUNKT2 usw...
ich hab schon einige ansätze:
set "cd=cds\manual.ini"
...
hier kann ich die 1. Zeile auslesen:
findstr /N /B /L /C:"[device]" "%cd%"
set "device="
FOR /F "delims=:" %%i in ('findstr /N /B /L /C:"[device]" "%cd%"') do set cdline=%%i
FOR /F "skip=%cdline% delims=" %%i in ('type "%cd%"') do if not defined device set device=%%i
%device%
...
hier kann ich alle zeilen zählen:
Set /A "Counter=0"
FOR /F "delims=" %%A IN (%cd%) DO SET /A "Counter+=1"
echo %Counter% Zeilen
...
hier kann ich alle zeilen auflisten:
for /f %%i in (%cd%) do (
echo %%i
)
aber wie kann ich sagen
liste mit von [PUNKT1] (exclusive) bis (und da bin ich variabel, was einfacher ist) z.B. eod (für: end od data) oder einfach bis zum nächsten [PUNKT],...
PS.: wieviele unterpunkte ich habe ist unbekannt (möglich sogar das es leer ist)
Danke für eure hilfe
ich möchte gerne aus Textdateien bestimmte informationen rausholen und listen,...
mein letztendliches projekt wird so aussehen,...
ich hab ne Haupttextdatei in der stehen (vorerst) drei überpunkte:
[PUNKT1]
0001000
0001010
0001020
[PUNKT2]
0002000
0002010
[PUNKT3]
0003000
jeder überpunkt beschreibt einen ordner (diese Punkte heißen nicht PUNKT sondern z.B. Software), wenn ich fertig bin möchte ich gerne nen ordner anlegen also PUNKT1 und dann kopiere ich die daten aus dem ordner H:\0001000 dann dem ordner H:\0001010 und dann 0001020 dannn gibts wieder nen neuen überordner mit PUNKT2 usw...
ich hab schon einige ansätze:
set "cd=cds\manual.ini"
...
hier kann ich die 1. Zeile auslesen:
findstr /N /B /L /C:"[device]" "%cd%"
set "device="
FOR /F "delims=:" %%i in ('findstr /N /B /L /C:"[device]" "%cd%"') do set cdline=%%i
FOR /F "skip=%cdline% delims=" %%i in ('type "%cd%"') do if not defined device set device=%%i
%device%
...
hier kann ich alle zeilen zählen:
Set /A "Counter=0"
FOR /F "delims=" %%A IN (%cd%) DO SET /A "Counter+=1"
echo %Counter% Zeilen
...
hier kann ich alle zeilen auflisten:
for /f %%i in (%cd%) do (
echo %%i
)
aber wie kann ich sagen
liste mit von [PUNKT1] (exclusive) bis (und da bin ich variabel, was einfacher ist) z.B. eod (für: end od data) oder einfach bis zum nächsten [PUNKT],...
PS.: wieviele unterpunkte ich habe ist unbekannt (möglich sogar das es leer ist)
Danke für eure hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152899
Url: https://administrator.de/forum/bestimmte-zeilen-aus-batchdatei-speichern-152899.html
Ausgedruckt am: 04.05.2025 um 03:05 Uhr
17 Kommentare
Neuester Kommentar
Hallo Roadrunner777 und willkommen im Forum!
Schematisch könnte das so aussehen:
Grüße
bastla
Schematisch könnte das so aussehen:
@echo off & setlocal
set "Liste=D:\Liste.txt"
set "Ordner="
for /f "usebackq delims=" %%i in ("%Liste%") do call :ProcessLine "%%i"
goto :eof
:ProcessLine
echo %~1|findstr /b "[">nul || goto :Kopieren
for /f "delims=[]" %%o in (%1) do set "Ordner=%%o"
echo md "%Ordner%"
goto :eof
:Kopieren
echo Kopiere %1 in Ordner "%Ordner%"
goto :eof
bastla

Moin,
schau dir Zeile 5 und Zeile vom Bastla an.
Zeile 5 Startet "etwas" mit %i, das in Zeile 9 als %1 angenommen wird.
Oder andersherum
starte den schnippsel mal mit
Gruß
edit:
@ Bastla: Ich und was sagen, in einem Fred in deiner Bastelstube? Ich werde mich hüten
Du hast da schon ein zwei Zeilen mehr geschrieben, da wäre doch Geiz (sparen) der falsche Weg
/edit
schau dir Zeile 5 und Zeile vom Bastla an.
Zeile 5 Startet "etwas" mit %i, das in Zeile 9 als %1 angenommen wird.
Oder andersherum
ablauf.bat /parameter
Bitte nicht bat - das ist eine cmd .echo %1 %2 %3 %4
schnippsel hallo otto hallo echo
Gruß
edit:
@ Bastla: Ich und was sagen, in einem Fred in deiner Bastelstube? Ich werde mich hüten
Du hast da schon ein zwei Zeilen mehr geschrieben, da wäre doch Geiz (sparen) der falsche Weg
/edit
Hallo Roadrunner777!
Im Batch oben verhält sich das Unterprogramm ":ProcessLine" wie ein eigener Batch - dort siehst Du dann auch gleich die Möglichkeit der Parameterübergabe.
Der aufgerufene Batch erhält die Parameter als %1, %2, ... %9, wobei mit der Schreibweise %~1 umgebende Anführungszeichen (die erforderlich sind, wenn der Parameter zB Leerzeichen enthält) entfernt werden können.
Grüße
bastla
[Edit] @t-mo: Sag' doch was, dann hätte ich mir das Ganze ersparen können ...
[/Edit]
Im Batch oben verhält sich das Unterprogramm ":ProcessLine" wie ein eigener Batch - dort siehst Du dann auch gleich die Möglichkeit der Parameterübergabe.
Der aufgerufene Batch erhält die Parameter als %1, %2, ... %9, wobei mit der Schreibweise %~1 umgebende Anführungszeichen (die erforderlich sind, wenn der Parameter zB Leerzeichen enthält) entfernt werden können.
Grüße
bastla
[Edit] @t-mo: Sag' doch was, dann hätte ich mir das Ganze ersparen können ...

warum cmd und nicht bat???
Weil Bastla dir einige Befehle gezeigt hat, die nur cmd kann, landet diese datei mal auf einer asbaschuraltkiste . weiß die das Sie damit nix anfangen kann.
bat to exe konverter,... damit kann ichs dann kompilieren und gut is
*püh*das ist alles andere als gut oder sicher oder was auch immer.
kompilier die mal, lass Sie laufen und schau in dein Temp Verzeichnis.
Gruß
edit
chcp
/edit
mal ganz laaaangssssam ala Rudi the rednose cant ride bicycles Scharping...
Eine haput datei hört sich doch kaputt an - wir haben alle Zeit der Welt - nutze Sie.
Was ist : copy bzw: wie kommt der denn da hin? garnicht.
Eine haput datei hört sich doch kaputt an - wir haben alle Zeit der Welt - nutze Sie.
wie kann ich es machen dann dann weiter programm kommt (aber erst wenn er fertig ist,...)
Du bist doch keine 12 und kannst bestimmt auch deutschlicher schreiben, das ordentliche Schreiben gehört bei jeder Sprache (batch; deutsch) zur grundvoraussetzung.Was ist : copy bzw: wie kommt der denn da hin? garnicht.

ok,
das ist wirklich zu abstrakt und ich verstehe den Weg nicht.
Ich nehme an:
Das wäre mir zu kompliziert. Ich vermuteanhand oben genannter Skizze für das Ziel gibt es einen Weg mit viel weniger Steinen.
5 Mark ins Schweinderl mit der Brille? [Ja] [Nein]
edit:

Ohne Rems blickst du bei fortgeschrittenem gebastlabasisierenden Scripten ganz schnell nix mehr.
Mit aller Zeit der Welt meinte ich - schreib deine Frage in einem Editor deiner Wahl, verschwende ein Blatt Papier und einen Kaffee und wenn du das 3 * gelesen hast - poste es hier, alle xx minuten ein Edit und Nachtrag ist grausam
das ist wirklich zu abstrakt und ich verstehe den Weg nicht.
Ich nehme an:
- ein Team pflegt diese ganzen Ordner mit Anleitungen bla bla gedöhns.
- ein anderer / oder die gleichen pflegen die Haupt/neben Datei(en)
- du willst dann diese zusätzlich gepflegte Datei auslesen um ein Iso zu bruzzeln?
Das wäre mir zu kompliziert. Ich vermuteanhand oben genannter Skizze für das Ziel gibt es einen Weg mit viel weniger Steinen.
5 Mark ins Schweinderl mit der Brille? [Ja] [Nein]
edit:
Zitat von @94451:
hm wie kann ich dann meine datei davor schützen das nicht jeder was verändern kann???
hm wie kann ich dann meine datei davor schützen das nicht jeder was verändern kann???
- NTFS nur lese Rechte?
- Schreibschutz
- liegt auf einem Share auf den nur du kommst.
was gibts für alternativen als kompilieren???
Naja -ehrlich deine Fragen sind eher auf Basiseinstieg, ich rate dir erstmal - nutze Rems, was glaubst du hab ich bei mir schon gezimmert und kann mich 5 Jahre später nicht mehr erinnern, warum ich "irgendwas" so krumm gebaut habe - stell das auf "easy" um und merke - upps der komplizierte Weg umschift einige Hügel, die keiner braucht. Ohne Rems blickst du bei fortgeschrittenem gebastlabasisierenden Scripten ganz schnell nix mehr.
PS.: was ist mit chcp gemeint???
ok
chcp steht bei mir 850,... was sagt mir das jetzt?
Das du mal chcp 1252 probieren könntest, wenn du ein Umlautproblem hast.ok
Mit aller Zeit der Welt meinte ich - schreib deine Frage in einem Editor deiner Wahl, verschwende ein Blatt Papier und einen Kaffee und wenn du das 3 * gelesen hast - poste es hier, alle xx minuten ein Edit und Nachtrag ist grausam

[OT]
...zeigt mir, als alten Hasen- der Robert Lembke noch kennt - bei euch ist eine große Portion Optimierungsbedarf.
Da würde ich ansetzen.
[/OT]
sicher???
sicher - denn alleine deine Frage mit den Umlauten in Kombination CD / ISO bruzzeln, oder kann doc oder PDF sein......zeigt mir, als alten Hasen- der Robert Lembke noch kennt - bei euch ist eine große Portion Optimierungsbedarf.
Da würde ich ansetzen.
[/OT]
Hallo Roadrunner777!
Der Batch endet (bei Auswahl 1) in Zeile 30 - daher wären die Zeilen 70, 71 und was sonst noch knapp vor dem Ende zu erledigen wäre, zwischen den Zeilen 29 und 30 einzufügen.
Grüße
bastla
P.S.: Die Zeile 7 könnte ein zusätzliches "e" vertragen (lässt sich vielleicht gegen eines der "r" bei "Vorraus" eintauschen) ...
Der Batch endet (bei Auswahl 1) in Zeile 30 - daher wären die Zeilen 70, 71 und was sonst noch knapp vor dem Ende zu erledigen wäre, zwischen den Zeilen 29 und 30 einzufügen.
Grüße
bastla
P.S.: Die Zeile 7 könnte ein zusätzliches "e" vertragen (lässt sich vielleicht gegen eines der "r" bei "Vorraus" eintauschen) ...