bob90 Geschrieben 2. Juni 2010 Geschrieben 2. Juni 2010 Hallo liebes Forum, ich hänge hier vor einem riesigen Batch Problem!!! Ich hab folgende aufgabe bekommen: Ich soll von einer Textdatei den Dateinamen auslesen der Dateiname ist wie folgt aufgebaut: XXX_XX_20100530.txt aus diesem Dateinamen soll ich nun das Datum "20100530" auslesen. Wenn das Datum gleich dem aktuellen ist bzw. zwischen heute +2 Tage (bsp: "20100601") liegt soll die Datei in ein anderes Verzeichnis verschoben werden! Ansonsten soll nichts mit ihr passieren! Ich hoffe mir kann jemand weiterhelfen meine ersten Versuche sehen so aus funktionieren aber teilweise nicht wirklich!!! @echo off for %x in (*.txt) do @for /f "tokens=1,2,3,* Delims=_." %i in ("%x") do echo "%k" pause @echo off for %x in (%date%) do @for /f "tokens=1,2,3,* Delims=." %i in ("%x") do echo "%k%j%i" do For %x in (%date%) do for /F "tokens=1,2,3,* Delims=_" %i in ("%x") @echo off For /F %%i in ('dir /B *.txt') do set Datei=%%i do @for /f "tokens=1,2,3,* Delims=_." %i in ("%Datei") do @echo %k% pause Ich hoffe mir kann jemand weiterhelfen!!! Zitieren
User-Root Geschrieben 2. Juni 2010 Geschrieben 2. Juni 2010 also ich glaube der unterste ist am nächsten dran. (getestet)echo off setlocal ENABLEDELAYEDEXPANSION cls For /F %%i in ('dir /B ^*.txt') do ( for /f "Delims=_ tokens=1-3" %%x in ("%%i") do ( set str=%%z set str=!str:~0,-4! echo !str! ) ) endlocal pause Damit gibt er zumindest den interessanten Teil deiner Datein aus. Kommst mit dem Rest selbst klar? Begründung für die !! Zitieren
bob90 Geschrieben 2. Juni 2010 Autor Geschrieben 2. Juni 2010 Hallo User\Root, das Ding funtkioniert ja soweit und gibt dann 2010 aus! Ich benötige ja aber das komplette Datum sprich aus: XXX_XX_20100519.txt und es soll dann 20100519 in die Variable speichern! Könntest du zusätzlich deinen Code mit Kommentaren versehen da ich absoluter Neuling auf dem Gebiet bin und dies so schnell wie möglich lernen will! Zitieren
User-Root Geschrieben 2. Juni 2010 Geschrieben 2. Juni 2010 (bearbeitet) Also gut: echo off rem Echos auschalten setlocal ENABLEDELAYEDEXPANSION rem zum aktivieren der !-Variablen in den for-Schleifen cls rem blanker bildschirm For /F %%i in ('dir /B *.txt') do ( rem die Dateinamen vom Befehl dir /b in die variable %%i übergeben for /f "Delims=_ tokens=1-3" %%x in ("%%i") do ( rem die values der Variablen %%i mit hilfe der "_" als array aufteilen set str=%%z rem die dritte spalte des Array an die Variable str übergeben (bei mir z.B. 20100530.txt) set str=!str:~0,-4! rem den Value des variablen str um 4 Zeichen von rechts kürzen (also das .txt weg) echo !str! rem die variable str vom letzten Stand ausgeben ) rem innere for schleife beenden ) rem äußere for-schleife schliessen endlocal rem gehört zu Zeile 2 pause rem warten auf Tasteneingabe Hast du den Quelltext mit copy paste übertragen? Ich hab mal ein paar Testdateien angelegt und der liefert bei mir immer die 20100530 als echo aus?!? Bearbeitet 2. Juni 2010 von User\Root Zitieren
bob90 Geschrieben 2. Juni 2010 Autor Geschrieben 2. Juni 2010 Ja hab ich vielen vielen Dank hast mir schon mal sehr weiter geholfen! Ich denke spätestens am Montag werde ich mit den nächsten Fragen kommen! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.