bodyparts
Goto Top

for string in Datei schreiben und später wieder einlesen

Moin,

ich möchte den Wert einer for schleife wenn ich das Programm beende in eine Datei schreiben und wenn ich das Programm wieder starte soll der Wert eingelsenden werden.

Die Schleife sieht so aus:

@for /d %%i in (X:\Daten\*) do @Findstr /i /C:%suche% %%i\Daten_info.txt>nul 2>nul && call :todo "%%i"  

sprich in welchem Ordner die Schleife ebendet wurde dort soll sie später laut abfrage wieder starten können.

wie geht das wohl

Gruß in den Abend

Content-Key: 127339

Url: https://administrator.de/contentid/127339

Printed on: April 18, 2024 at 15:04 o'clock

Member: bastla
bastla Oct 17, 2009 at 20:15:25 (UTC)
Goto Top
Hallo bodyparts!

Einmal mehr ist Deine Problembeschreibung sehr sparsam ausgefallen ...

Falls gemeint sein sollte, dass Du protokollieren willst, welche Ordner bereits verarbeitet wurden, um diese beim nächsten Lauf des Batches auslassen und nur neu hinzugekommene behandeln zu können, dann (ungetestet) etwa so:
for /d %%i in (X:\Daten\*) do findstr "%%i" /c:Erledigt.txt || findstr /i /C:%suche% %%i\Daten_info.txt>nul 2>nul && (>>Erledigt.txt echo %%i & call :todo "%%i")
Grüße
bastla
Member: bodyparts
bodyparts Oct 17, 2009 at 20:54:04 (UTC)
Goto Top
okay ...

bastla, dann muss ich an meiner Formulierung arbeiten.

Die "For" Schleife ruft ja ein :todo auf, wenn ich jetzt das Programm einfach schliessen würde, dann möchte ich beim erneuten aufrufen der Batch genau an der Stellen weiter laufen. Es werden ja alle Unterordner von x:\Daten durchsucht, jedesmal wenn ich die Batch starte, startet sie von vorne is ja auch so gewollt. Nun möchte ich den Punkt speichern und abfragen ob am letzten Punkt weiter gesucht bzw dort weiter läuft.

Hoffe das war jetzt verständlicher.

Gruß
Member: bastla
bastla Oct 17, 2009 at 21:10:47 (UTC)
Goto Top
Hallo bodyparts!

Grundsätzlich gehe ich nicht davon aus, dass "for"-Schleifen abgebrochen werden (daher fehlte diese explizite Information oder der Code, der zum Abbruch führt).


Grüße
bastla
Member: bodyparts
bodyparts Oct 19, 2009 at 08:10:01 (UTC)
Goto Top
Moin Bastla,

die "For" Schleife wird unterbrochen, weil es eine Suche ist. Hat man gefunden was man gesucht hat unterbreche ich die Schleife. Das rausschreiben ist mir klar, aber wie lesen ich den Wert wieder ein?
Kann ich den Wert 1~%, der aus der Schleife rausgeschrieben wird, einfach am Anfang der Batch wieder setzen? Wie lese ich die erste Zeile der Datei wieder ein.

Ich habe auch hier wieder eine "for" Schleife gefunden, denke dies ist aber nicht nötig, sondern es müsste auch mit einer kleiner Zeile gehen.

Gruß

so etwas später....

@for /f " usebackq delims==" %%i in ("c:\temp\wert.txt) do "set A=%%i"   

möchte den Eintrag aus der Datei wert.txt als Variabel A setzen.... geht aber nicht, warum wohl

Gruß
Member: bastla
bastla Oct 19, 2009 at 09:42:18 (UTC)
Goto Top
Hallo bodyparts!

Wenn die Schleife abgebrochen wurde, kann sie nur wieder von vorne gestartet werden - dann muss bekannt sein, was bereits verarbeitet wurde (um es dieses Mal auslassen zu können), und genau diese Funktionalität soll mein obiger Vorschlag bieten.

Ansonsten viel Glück bei der Suche nach einer anderen Lösung ...

Grüße
bastla
Member: bodyparts
bodyparts Oct 19, 2009 at 10:05:49 (UTC)
Goto Top
Hallo Bastla,

okay, werde ich dann testen. Ich werde dann vorher abfragen, ob die Suche vorgesetzz werden soll, oder halt vor vorne. Gegenfalls die Datei löschen.

Gruß Bodyparts
Member: bodyparts
bodyparts Oct 19, 2009 at 14:27:31 (UTC)
Goto Top
Hallo Bastla,

die Datei wird geschrieben, aber wenn ich die Batch wieder starte wird nicht fortgesetzt, sondern wieder beim gefundenen Suchstring von vorne gestartet.

Kannst du deinen Code überpürfen?

Gruß bodyparts
Member: bastla
bastla Oct 19, 2009 at 14:43:32 (UTC)
Goto Top
Hallo bodyparts!

So sollte es besser gehen (auch noch die Berücksichtigung von Groß-/Kleinschreibung unterbunden):
for /d %%i in (X:\Daten\*) do findstr /i /c:"%%i" Erledigt.txt || findstr /i /C:%suche% %%i\Daten_info.txt>nul 2>nul && (>>Erledigt.txt echo %%i & call :todo "%%i")
Grüße
bastla
Member: bodyparts
bodyparts Oct 20, 2009 at 08:37:37 (UTC)
Goto Top
Hallo Bastla,

klasse, läuft.

Jetzt möchte ich noch eine andere Lösung testen. Leider verstehe ich es wohl noch nicht.

Mit der selben Schleife möchte ich aus jedem Unterordner aus x:\daten die Datei abc.jpg öffnen und dies ebenfalls mit einer Datei protokolieren. Somit kann ich bei bedarf wieder an der abgebrochenen Schleife vorfahren.

Somit hätte ich wohl alle Möglichkeiten um den Datensatz von nun ca. 1000 Ordner zuverwalten.

Grüße Bodyparts