Ich versuche, mit einer FOR / R-Schleife einige Ordner mit besonders langen Namen zu durchlaufen (die länger als 260 Zeichen sind, daher muss \? \ Verwendet werden). Ich brauche aus der Schleife den vollqualifizierten Pfadnamen und die letzte Zugriffszeit
Wenn ich das mache:
for /r "\\?\c:\windows" %a in (*.bat) do echo %~fta
Ich erhalte den vollständigen Pfad und die letzte geänderte Zeit. Selbst wenn ich DIRCMD auf / TA setze, scheint es keine Auswirkungen auf FOR / R zu geben Kennt jemand eine Möglichkeit, um zu erzwingen, dass auf diese Zeit / dieses Datum zuletzt zugegriffen wird, anstatt sie zuletzt zu ändern? AFAIK, der lange Pfadname, schließt Powershell aus, was mein ursprünglicher Ansatz war, aber ich freue mich auch darüber, Vorschläge zu erhalten.
for /f "delims=" %%F in ('dir /o:d /t:a /s /b "c:\myPath\*"') @echo %%~tF %%F
Gibt nicht dasselbe Datum aus wie nur dir / t: a also zurück zu Feld 1, leider. @AFH ja, die Zeitstempel sind da und kämpfen nur darum, an sie heranzukommen.
dir
Verwenden Sie in Ihrer Schleife dann Filter wie grep
und sed
oder cut
die Zeitstempel zu extrahieren, die Sie benötigen? Hierbei handelt es sich um Unix-Dienstprogramme, die mehrfach auf Windows portiert wurden, einschließlich der MS-eigenen Dienste für Unix.