Veröffentlicht 2. Juni 201015 j 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!!!
2. Juni 201015 j 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 !!
2. Juni 201015 j 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!
2. Juni 201015 j 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 201015 j von User\Root
2. Juni 201015 j 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!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.