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

for string in Datei schreiben und später wieder einlesen

Frage Entwicklung Batch & Shell

Mitglied: bodyparts

bodyparts (Level 2) - Jetzt verbinden

17.10.2009, aktualisiert 22:36 Uhr, 4032 Aufrufe, 9 Kommentare

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:

01.
@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
Mitglied: bastla
17.10.2009 um 22:15 Uhr
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
Bitte warten ..
Mitglied: bodyparts
17.10.2009 um 22:54 Uhr
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ß
Bitte warten ..
Mitglied: bastla
17.10.2009 um 23:10 Uhr
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).

Mein Ansatz sollte aber auch für diesen Fall passen, da in der Datei "Erledigt.txt" (einen Pfad kannst Du ja ergänzen und auch eine Variable dafür zu verwenden wäre sinnvoll) jeder bearbeitete Ordner eingetragen wird - beim nächsten Durchlauf wird überprüft, ob der Ordner schon in der Datei steht, und falls dem so sein sollte, der Ordner (wegen der Verknüpfung mit "||") nicht verarbeitet.

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
19.10.2009 um 10:10 Uhr
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....

01.
@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ß
Bitte warten ..
Mitglied: bastla
19.10.2009 um 11:42 Uhr
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
Bitte warten ..
Mitglied: bodyparts
19.10.2009 um 12:05 Uhr
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
Bitte warten ..
Mitglied: bodyparts
19.10.2009 um 16:27 Uhr
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
Bitte warten ..
Mitglied: bastla
19.10.2009 um 16:43 Uhr
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
Bitte warten ..
Mitglied: bodyparts
20.10.2009 um 10:37 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...