Batch Datum der zuletzt geänderten Datei - mit Unterordner

  • Ersteller Ersteller regenwetter
  • Erstellt am Erstellt am
R

regenwetter

Gast
Hi,
ich habe in einem Ordner mehrere Unterordner.
Nun will ich wissen wann zuletzt eine Datei in dem Ordner (plus Unterordner) geändert wurde?

Dies muss mit einer Batch-Datei realisiert werden.

Ich habe im Netz zwar gesehen, dass man mit Dir den Inhalt eines Ordner nach dem Datum sortieren kann, jedoch wird die Sortierung immer für jeden Ordner neu vorgenommen.

Habt ihr eine Idee wie ich dies umsetzen könnte?

Danke
 
Ups hab was vergessen.
Das ganze muss sich mir Windows-Boardmitteln realisieren lassen.
Keine externen Tools.
 
nur Windows Board-Mittel, mhhhh , man könnte das schon per Batch machen, es kommt drauf an, wie grosse deine Daten sind. wenn es nur ein paar Gigabyte sind, dann machst du so:

du erstellst einen neuen Ordner, z.B. c:\Temp und mit dem Befehl Copy kopierst du alle Dateien von den Unterordnern rein, dann sortiest du die nach Datum und am Ende wird die Sortierung als Text-Datei angezeigt ^^
 
nein, ohne externes Tool.

Folgendes habe ich mal angefangen.

Es soll das Änderungsdatum der neuesten tib-Datei ermittelt werden.
Wie bekomme ich statt dem Dateinamen das Datum angezeigt?
@echo off &setlocal
pushd "C:\acronis\" ||goto :eof
for /f "tokens=1-3 delims=" %%a in ('dir /a-d /b /od *.tib') do set "newestFile=%%a"
echo %newestFile%
popd
PAUSE

Dann prüfe ich, ob eine Datei neuer ist als das Datum der letzten Sicherung.
Warum funktioniert die Ausgabe "ECHO %sich%" nicht, obwohl ich Dateien habe ich neuer sind?
set sicherung="15.03.2004"

forfiles /P C:\Intel\ /s /D +%sicherung% /c "cmd /c if @isdir==FALSE set sich=ja"

ECHO %sich%

PAUSE

Dann soll gepüft, welches Datum das neueste ist. Nur wie weiß ich noch nicht.
 
Zuletzt bearbeitet:
öhmm... Guten Tag Powershell ? ;) Einfach, schnell, praktisch - gut.

Befehl? --> Suchmaschine deines Vertrauens.
 
Hm, wäre ne Alternative.
Da ich mich zumindest ein wenig in Batch auskenne würde ich es trotzdem gerne damit versuchen.
Ich glaube es fehlt mir gar nicht mehr so viel.
 
Hi,
ich hoffe das kann dich etwas weiter bringen.
Hier werden txt die älter sind als aktuelles Datum, ins Test Verzeichnis verschoben.
Code:
@echo off
cls
set "pfad=C:\Temp\Test"
set "sicherung=15.03.2004"
for %%f in ("c:\Temp\*.txt") do ( 
  REM gibt Datei + Datum aus
  @echo %%f %%~tf
  
  REM - wenn Datei/en älter sind
  if %%~tf LEQ %date% @echo %%~nf%%~xf - %%~tf ist aelter && echo move %%f %pfad%
  REM if %%~tf LEQ %sicherung% @echo %%f ist aelter && echo move %%f %pfad%
)
Du könntest anstatt %date% einfach das Datum der Vergleichsdatei (#2 if...) angeben und dann ... machen
 
Zuletzt bearbeitet: (fine Optik)
Hm,
so wirklich hilft mir das nicht weiter.
Also nochmal Schritt für Schritt.

Stehe irgendwie aufm Schlauch.

Ich will das Datum der neuesten Datei in einer Variablen stehen haben.
Leider wird nur der Dateiname angegeben.
@echo off &setlocal
pushd "C:\acronis\" ||goto :eof
for /f "tokens=1-3 delims=" %%a in ('dir /a-d /b /od *.tib') do set "newestFile=%%a"
echo %newestFile%
popd
PAUSE

Eigentlich dachte ich ich muß statt "newestFile=%%a" einfach "newestFile=%%~tf" angeben, aber dies funktioniert nicht.
 
Ahso, versuche per
Code:
for /f "tokens=1-3 delims=" %%a in ('dir /a-d /b /od *.tib') do set "newestFile=%%~ta"
regenwetter schrieb:
Eigentlich dachte ich ich muß statt "newestFile=%%a" einfach "newestFile=%%~tf" angeben, aber dies funktioniert nicht.
bei mir bezieht sich das f auf for %%f bei dir muss es natürlich a sein, wäre es %%i wie üblich, dann musste es auch %%~ti heißen :)

Übrigens du kannst dafür auch
Code:
for /f %%a in ("*.tib") do set newestFile=%%~ta
verwenden.
 
Zuletzt bearbeitet:
Danke das bringt mich schon sehr weiter. Leichtsinnsfehler von mir.
Wobei dein unteres Bsp funktioniert nicht wirklich, da die neueste Datei nicht ganz unten steht und somit ein falsches Datum gesetzt wird.

Nun habe ich es fast.

Die .tib-Datei hat das heutige Datum. Im Suchordner gibt es auch Dateien von heute.
Warum wird dann sich nicht auf ja gesetzt?
Wenn ich das Datum anzeigen passt es auch.

@echo off &setlocal

SET sich=nein

pushd "c:\acronis\" ||goto :eof
for /f "tokens=1-3 delims=" %%a in ('dir /a-d /b /od *.tib') do set "newestFile=%%~ta"
SET newestFile=%newestFile:~0,10%
echo %newestFile%
popd

forfiles /P C:\Intel\ /s /D +%newestFile% /c "cmd /c if @isdir==FALSE SET sich=ja"

ECHO %sich%

PAUSE
 
Zuletzt bearbeitet:
Jap, sträub dich nicht gegen PowerShell und verwende nicht das alte Batch Konstrukt.
Code:
$files = gci "C:\sowieso\sowieso" -Recurse -File | sort { -$_.LastWriteTime }
Und fertig ist der Lack. ;)
 
Rein interessehalber würde mich trotzdem die Batch-Variante interessieren...
 
Zurück
Oben