Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch - Dateiname auslesen, Datum vergleichen, Addition und verschieben

Empfohlene Antworten

Veröffentlicht

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!!!

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 !!

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!

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?!?post-31269-14430448711896_thumb.jpg

Bearbeitet von User\Root

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.