thilo-55
Goto Top

Neueste Datei mit Batch suchen

Ein herzliches Hallo an die Teilnehmer des Forums.
Leider komme ich mit meinen batch/dos-Kenntnissen nicht mehr weiter.
Evtl. kann mir ja hier jemand helfen.
Folgende Problematik:
Auf der Festplatte (Win7) befinden sich in div. Unterverzeichnissen mehrmals die gleiche, fest definierte Datei (z.B. "datei.dat"), aber mit unterschiedlichen Änderungsdatum-Daten.
Mittels Batch sollte nun die Dateien gesucht und gefunden werden und nur von der Neuesten der diesbezügliche Pfad als Variable ausgegeben werden.
Ich habe versch. Ansätze mit dir/s in Verbindung mit findstr verfolgt, bringe dies dann aber mit einer for-do Schleife nicht zusammen.
Evtl. hat jemand eine gute Idee?
Viele Grüße
Thilo

Content-Key: 254350

Url: https://administrator.de/contentid/254350

Printed on: April 19, 2024 at 15:04 o'clock

Member: colinardo
colinardo Nov 10, 2014 updated at 14:38:06 (UTC)
Goto Top
Hallo Thilo,
machst du beispielsweise so:
"ordner" ist der Startordner ab dem alle Unterordner nach der "datei.dat" durchsucht werden sollen. Die neueste Datei wird dann in der Variablen %datei% gespeichert.
@echo off & setlocal
set "ordner=C:\temp"  
set datei=
for /f "delims=" %%a in ('dir /b /s /a-d /o-d "%ordner%\datei.dat" 2^>nul') DO @(  
  if not defined datei set "datei=%%a"  
)
echo %datei% 
Grüße Uwe
Member: thilo-55
thilo-55 Nov 10, 2014 at 15:41:22 (UTC)
Goto Top
Hi Uwe,
vielen Dank für Deine schnelle Antwort.
Leider ist es so, dass augenscheinlich "irgendeine" datei.dat ausgegeben wird - zumindest auf dem Win-XP-Rechner, auf dem ich es gerade ausprobiere - vielleicht liegt das Fehler aber auch an mir...
Werde mich Morgen nochmals genauer damit beschäftigen.
Grüße Thilo
Member: rubberman
Solution rubberman Nov 10, 2014, updated at Nov 11, 2014 at 07:23:57 (UTC)
Goto Top
Hallo thilo-55, willkommen im Forum.

Leider ist es so, dass augenscheinlich "irgendeine" datei.dat ausgegeben wird - zumindest auf dem Win-XP-Rechner
"Irgendeine" ist nicht ganz richtig. Es ist die erste gefundene Datei. Die Option /o sortiert zwar, aber immer nur innerhalb eines Verzeichnisses.
Ich habe mal versucht das Dateidatum als Timestamp neu zusammen zu setzen und über SORT laufen zu lassen. Funktioniert so bei mir (Win7).
@echo off &setlocal
set "ordner=C:\temp"  
set "datei=datei.dat"  

set "newest="  
for /f "tokens=1*" %%f in (  
  '(  
    for /r "%ordner%" %%i in (%datei%^) do (  
      for /f "tokens=1-5 delims=.: " %%j in ("%%~ti"^) do echo %%l%%k%%j%%m%%n "%%~i"  
    ^)
  ^)^|sort'  
) do for %%h in (%%g) do set "newest=%%~h"  

echo "%newest%"  
pause
Grüße
rubberman
Member: thilo-55
thilo-55 Nov 11, 2014 at 07:26:58 (UTC)
Goto Top
Hallo rubberman,
das ist ja gigantisch - bin total begeistert !
Funktioniert genau so, wie ich es verzweifelt versucht habe, selbst zu lösen (und dann auch noch mit so wenig Quelltext)
Ich danke Dir sehr!
Beste Grüße
Thilo