Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 4051 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Mehrere Domains einlesen (9)

Frage von Agilolfinger zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

LAN, WAN, Wireless
Gebäudeverkabelung 10Gigabit LWL (28)

Frage von raffzwo zum Thema LAN, WAN, Wireless ...

Windows Update
Novemberpatches und Nadeldrucker bereiten Kopfschmerzen (14)

Tipp von MettGurke zum Thema Windows Update ...