dragonkm
Goto Top

Suche und protokollierung von Dateien ab, bzw. bis zu einem bestimmten Alter

Hallo Admin-Gemeinde,

ich habe ein Problem, und zwar soll ich in unserem Netzwerk einen Dateiscan machen, der mir alle Dateien bis zum 31.12.2003 auflistet und diese dann in einer txt Datei speichert. Mit der Windows Suche ist es kein Problem, aber das ganze soll per Script (DOS) laufen. Kann mir jemand helfen?

Ich stelle es mir folgendermaßen vor

BEFEHL /date:31.12.2003 >> scan.txt

Und als Ergebniss sollte in der scan.txt folgendes stehen

04.05.2000 - 14:30 - ERSTELLER - C:\Dokumente\Datei.doc

Ich hoffe das war verständlich. Falls mir jemand hilft, wär ich echt dankbar.

Content-ID: 20541

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Biber
Biber 29.11.2005 um 22:28:06 Uhr
Goto Top
Na, DragonKM,

da hast Du aber echt ein Problem.. Du glaubst doch nicht im Ernst, dass so etwas mit Bordmitteln machbar ist...

Also ich an Deiner Stelle würde das schön in sauber und in Ruhe in einem VBS-Skriptchen zusammenbraten - diese Aufgabe mit Batch zu lösen, ist wirklich was für Steinbeißer..

Sei's drum.. nur um zu zeigen, dass es machbar ist:
::---snipp ListFilesWithOwnerOlderThan.bat
@echo off & Setlocal enableDelayedExpansion
:: (c) Biberware 2005
IF [%2]== (echo Syntax %0 Startverzeichnis M-T-Y-Datum ) & goto :eof
Set "StartDir=%~1"  
Set "DeadLine=/d:%2"  
Set "New=%temp%\newerThan2004" & set "OldFiles=%temp%\olderthan2004"  
Set "OldWithOwner=%temp%\older2004WithOwner"  
Set "Final=scan.txt"  
If Exist "%OldWithOwner%" del "%OldWithOwner%"  
If Exist "%Final%" del "%Final%"  
xcopy "%startdir%" %temp%\ /s /y /i /l %deadLine%|find /v "Datei(en) kopiert">%New%  
xcopy "%startdir%" %temp%\ /s /y /i /l /exclude:%New%|find /v "Datei(en)">%OldFiles%  
for /F "delims=" %%i in (%oldFiles%) do (  
       for /f "tokens=1-4*" %%a in ('dir /Q "%%i"^|find "%%~nxi"') do (  
           call :writeFinal "%%i" %%a %%b %%c "%%d"  
        ))
Goto :eof
~~
:writeFinal
Set "OwnerAndFileName=%~5"  
Set /a "TokeninName=0" & Set "Firstpart=@@@@@"  
for %%i in (%~n1) do if not [%%i]== if [!FirstPart!]==[@@@@@] set "FirstPart=%%i"  
Echo %2 	%3 	%4	 !OwnerAndFileName:%Firstpart%=..%~dp1%Firstpart%!>>%Final%
goto :eof
::---snapp ListFilesWithOwnerOlderThan.bat

schreibt mit zwei Parametern [Startverzeichnis] und [Deadline-Datum] aufgerufen folgendes in die Scan.txt:

ListFilesWithOwnerOlderThan X:\Groups\Beispiel 01-01-2004
12.12.2003 14:53 38.400 VORDEFINIERT\Administra..X:\Groups\Beispiel\Dokumentation\Größenberechnung
25.06.2003 10:53 356.352 VORDEFINIERT\Administra..X:\Groups\Beispiel\Dokumentation\Beispiel_VIEWS_Stand_2003_06_24.doc
23.02.2003 14:52 65.024 VORDEFINIERT\Administra..X:\Groups\Beispiel\Dokumentation\Übergabeprotokoll_2003_02_18.doc
23.02.2003 14:48 31.232 DOMAIN1\USER34 ..X:\Groups\Beispiel\Dokumentation\Übergabeprotokoll_2003_02_18.xls

Aber er hat seine Grenzen... Username wird nur abgeschnitten geliefert ("VORDEFINIERT\Administra") und wenn ein den Dateinamen Leerzeichen sind, geht die Endung verloren beim Umformatieren.

HTH anyway
Biber
DragonKM
DragonKM 29.11.2005 um 23:07:07 Uhr
Goto Top
Super das Script... vielen Dank, von VBS hab ich absolut null Ahnung.

Aber eine Frage hab ich noch. Wenn ich ein Laufwerk scannen will, tut sich nichts mehr.

Ich habe eingegeben "ListFilesWithOwnerOlderThan Y:\ 01-01-2004"

Das Laufwerk ist nicht gross, nur ca. 20 MB. Muss ich da was in dem Script ändern?

Vielen Dank für Deine / Eure Hilfe
Biber
Biber 30.11.2005 um 12:22:10 Uhr
Goto Top
Moin DragonKM,

nö, das Script sollte schon so laufen.. es läuft ins Leere, wenn keine Dateien älter als "M-T-Y" da sind.. sonst sollte es tun.
Schick mir mal Deine Mailadresse per pn, das brauchen wir nicht im Forum lösen. Lass Dir Zeit, vor heute abend habe ich nämlich keine face-wink
Grüße Biber