Das Extrahieren des Datums ist relativ einfach, siehe HELP CALL
und versuchen Sie diese einfache BAT-Datei
@echo off
setlocal enabledelayedexpansion
FOR %%A IN (*.*) DO (
set tf=%%~tA
echo %%~fA ... !tf!
)
Über diesen Ansatz hinaus zu gehen und eine Lösung für Ihr Problem zu finden, scheint ziemlich einfach zu sein...
@echo off
setlocal enabledelayedexpansion
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
md !fd!
move /Y %%~fA !fd!
)
aber warte, dieser Code wird nicht garantiert ausgeführt. Es gibt einige Abhängigkeiten vom Datumsformat, die die Ausführung dieses einfachen Codes verhindern können. Die Handhabung von Datumsangaben in der BAT-Datei ist nicht einfach, da das Datumsformat vom Gebietsschema und sogar von benutzerdefinierten Einstellungen abhängt. In diesem speziellen Stück wird es zu Problemen kommen, wenn das Datumstrennzeichen /
oder wenn das Datumsformat zwei Ziffern für das Jahr anstelle von vier Ziffern verwendet, wodurch das Datum nur 8 statt 10 Stellen füllt... Die Variationen des Formats und damit die möglichen Fehler in diesem Code sind endlos.
Eine mögliche Lösung besteht darin, das Datumsformat vorübergehend auf ein bekanntes Format zu ändern. Fügen Sie den folgenden Code vor der Schleife ein
....
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f >nul
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy-MM-dd" /f >nul
reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH:mm:ss" /f >nul
...
und dann, nach der Schleife, zurück zum Original.
...
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f >nul
...