Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch, mit DIR nur .exe und .dll dateien aus gewissem zeitraum auflisten

Frage Entwicklung

Mitglied: d3luxe

d3luxe (Level 1) - Jetzt verbinden

17.03.2009, aktualisiert 20:03 Uhr, 6853 Aufrufe, 11 Kommentare

Also nach meinem letzten threat hab ich jetzt nochmal einen neuen gemacht da es ja ein anderes thema ist... sollte das nicht richtig sein sagt mir bescheid!

Also ich möchte mit dem DIR befehl eine art Log datei erstellen die alle .exe und .dll dateien die in den letzten 3 monaten erstellt, bearbeitet wurden enthält!

Soll ich da ein ganz normales log machen und das später irgendwie nachbearbeiten oder gibt es einen parameter für den DIR befehl mit dem man das alles machen kann? Wenn es kein parameter gibt erklärt mir bitte wie ich das bearteite!
Mitglied: bastla
17.03.2009 um 20:31 Uhr
Hallo d3luxe!

Da bin ich im anderen Thread etwas zu spät gekommen ...

Du könntest anstelle von "dir" den Befehl "xcopy" ein wenig "zweckentfremden":
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ein Ordner" 
03.
set "Datum=12-17-2008 
04.
set "Log=D:\Logdatei.txt" 
05.
set "Ziel=C:\" 
06.
 
07.
if exist "%Log%" del "%Log%" 
08.
for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.exe" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i 
09.
for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.dll" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i
Das "Ziel" (es wird ja wegen des "/L" nicht wirklich kopiert) muss mit einem "\" enden und darf nicht gleich mit der Quelle sein oder unterhalb davon liegen (daher am besten ein anderes Laufwerk wählen).

Mit dynamischem Datum sähe das etwa so aus:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ein Ordner" 
03.
set /a Monate=3 
04.
set "Log=D:\Logdatei.txt" 
05.
set "Ziel=C:\" 
06.
 
07.
set "T=%date:~-10,2%" 
08.
set /a M=1%date:~-7,2%-%Monate% 
09.
set "J=%date:~-4% 
10.
if %M% leq 100 ( 
11.
    set /a M+=12 
12.
    set /a J-=1 
13.
14.
set "Datum=%M:~-2%-%T%-%J%" 
15.
 
16.
if exist "%Log%" del "%Log%" 
17.
for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.exe" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i 
18.
for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.dll" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i
Falls es noch mehr Dateitypen werden sollten, wäre eine Schleife angebracht:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ein Ordner" 
03.
set "Typen=exe dll bat" 
04.
set /a Monate=3 
05.
set "Log=D:\Logdatei.txt" 
06.
set "Ziel=C:\" 
07.
 
08.
set "T=%date:~-10,2%" 
09.
set /a M=1%date:~-7,2%-%Monate% 
10.
set "J=%date:~-4% 
11.
if %M% leq 100 ( 
12.
    set /a M+=12 
13.
    set /a J-=1 
14.
15.
set "Datum=%M:~-2%-%T%-%J%" 
16.
 
17.
if exist "%Log%" del "%Log%" 
18.
for %%a in (%Typen%) do ( 
19.
    for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.%%a" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i 
20.
)
Noch als Anmerkung: Falls auch die Dateigröße benötigt wird: %%~zi

Grüße
bastla

[Edit] Datum im ersten Beispiel auf Dezember - sollten ja nur 3 Monate sein - korrigiert [/Edit]
Bitte warten ..
Mitglied: bastla
17.03.2009 um 21:06 Uhr
... aber da ja eigentlich nach "dir" gefragt war :
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ein Ordner" 
03.
set "Typen=*.exe *.dll" 
04.
set /a Monate=3 
05.
set "Log=D:\Logdatei.txt" 
06.
 
07.
set "T=%date:~-10,2%" 
08.
set /a M=1%date:~-7,2%-%Monate% 
09.
set "J=%date:~-4% 
10.
if %M% leq 100 ( 
11.
    set /a M+=12 
12.
    set /a J-=1 
13.
14.
set "Datum=%J%-%M:~-2%-%T%" 
15.
 
16.
if exist "%Log%" del "%Log%" 
17.
pushd "%Quelle%" 
18.
for /f "delims=" %%i in ('dir /s /b /a-d %Typen%') do ( 
19.
    for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do if %%c-%%b-%%a geq %Datum% >>"%Log%" echo %%~ti %%i 
20.
21.
popd
Grüße
bastla
Bitte warten ..
Mitglied: d3luxe
17.03.2009 um 21:16 Uhr
nochmal danke für die antworten :D ich werd herumexperimentieren und mir die für meinen zweck beste mehtode heraussuchen! Das mit dem "dir" sieht am besten aus :D die Typen kann ich ja erweitern? weil ich werde diese nehmen:

.bak1
.bak2
.bat
.cmd
.com
.dll
.ini2
.pif
.reg
.ren
.scr
.sys
.vbs
.vir
.exe
.bin
.wsf
.vbe
.dat

Das ganze soll mal ein scanner werden der die dateien der letzten zeit auflistet und ein script ausführen kann :D Das script das es einlesen kann muss ich auch erst noch erschaffen :D
Bitte warten ..
Mitglied: bastla
17.03.2009 um 21:22 Uhr
Hallo d3luxe!
die Typen kann ich ja erweitern?
Falls die Liste zu lang würde (hab ich selbst noch nicht mit so vielen Typen versucht), könntest Du ja mehrere Schleifen hintereinander ausführen - lässt sich auch in jeweils eine einzige Zeile packen:
for %%a in (%Typen%) do for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.%%a" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do >>"%Log%" echo %%~ti %%i
oder
for /f "delims=" %%i in ('dir /s /b /a-d %Typen%') do for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do if %%c-%%b-%%a geq %Datum% >>"%Log%" echo %%~ti %%i
Das mit dem "dir" sieht am besten aus
Die "xcopy"-Version sollte aber schneller sein ...

Grüße
bastla
Bitte warten ..
Mitglied: d3luxe
17.03.2009 um 21:25 Uhr
ich makiere das ganze mal noch nicht als gelöst erst werde ich versuchen das ganze umzusetzen! Was mein problem ist, es soll auf jedem PC laufen und nicht jeder pc hat 2 partitionen oder festplatten! Deswegen kann ich das ganze nicht auf C:\ lassen? Die logs usw.?
Bitte warten ..
Mitglied: bastla
17.03.2009 um 21:35 Uhr
Hallo d3luxe!
nicht jeder pc hat 2 partitionen oder festplatten!
Du kannst als "Ziel" des "xcopy" auch eine Freigabe (als UNC-Pfad) angeben.

Wenn das gesamte Laufwerk C: durchsucht werden soll, kann tatsächlich "C:\" nicht als Ziel angegeben werden (Fehler: Zyklische Kopie nicht möglich).

Abgesehen davon darf die "Quelle" nicht mit einem "\" enden, sodass dafür also nur "C:" anzugeben wäre.
Das oben Gesagte gilt nicht für die "dir"-Variante - die sollte überall funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: d3luxe
17.03.2009 um 21:40 Uhr
Also die xcopy Methode gibt kein Log aus! ich habe die Pfade entsprechend meines pcs angepasst aber es gibt nirgends ein log!

[code]@echo off & setlocal
set "Quelle=E:\test"
set "Typen=exe dll bat"
set /a Monate=3
set "Log=E:\Logdatei.txt"
set "Ziel=C:\"

set "T=%date:~-10,2%"
set /a M=1%date:~-7,2%-%Monate%
set "J=%date:~-4%
if %M% leq 100 (
set /a M+=12
set /a J-=1
)
set "Datum=%M:~-2%-%T%-%J%"

if exist "%Log%" del "%Log%"
for %%a in (%Typen%) do (
for /f "delims=" %%i in ('xcopy /s /y /d:%Datum% /L "%Quelle%\*.%%a" "%Ziel%" ^|findstr /v /c:"Datei(en) kopiert"') do echo %%~ti %%i >> "%Log%"
)
pause[/code]

die >> "%Log%" echo %%~ti %%i Methode hat nicht funktioniert deswegen hatte ich das umgeändert! Aber es hat nichts geändert! es stürzt nicht ab es läuft bis zum pausebefehl durch!

Die dir methode teste ich gleich!

Die DIR methode läuft durch aber es kommt, Datei nicht gefunden!

Muss %Quelle% das sein was ich scannen möchte?

Achja.. wie mache ich so Codes?
Bitte warten ..
Mitglied: bastla
17.03.2009 um 21:53 Uhr
Hallo d3luxe!
wie mache ich so Codes?
Anstelle der eckigen Klammern "<" und ">" verwenden (bzw Formatierungshilfe ansehen)
die >> "%Log%" echo %%~ti %%i Methode hat nicht funktioniert deswegen hatte ich das umgeändert!
Daran sollte es keinesfalls liegen ...

Wie sieht bei Dir die Ausgabe eines
echo %date%
aus? Vorausgesetzt habe ich
17.03.2009
oder
Di 17.03.2009
Zur Kontrolle kannst Du auch noch am Ende des Batches ein %Datum% ausgeben lassen - sollte bei der Variante "xcopy"
01.
12-17-2008
und bei der "dir"-Version
01.
2008-12-17
ergeben.

Schließlich wäre noch ein Test mit
for %i in (E:\metin2accs\*.*) do @echo %~ti %i
von der Kommandozeile sinnvoll - das Ergebnis sollte ein Ausgabeformat der Art
17.03.2009 21:45 E:\metin2accs\test.txt
haben.

Grüße
bastla
Bitte warten ..
Mitglied: d3luxe
17.03.2009 um 21:59 Uhr
Danke für deine antwort!

Ich weiß woran es lag... Bei Quelle musste ich C:\ angeben da hattest du etwas verwechselt weil in E:\metin2accs lagen keine .exe .dll oder .bat dateien darum auch kein log!
Ich habe das jetzt geändert und beide Varianten funktionieren die DIR und die xcopy methode ^^ Danke für deine antwort! Ich werde die DIR methode nutzen da ich sie auf allen systemen anwenden kann und nicht nur an denen mit partitionen!
Bitte warten ..
Mitglied: d3luxe
02.04.2009 um 19:43 Uhr
Ich glaube deine Methode berücksichtigt nur den Monat.. aber es ignoriert das Jahr :D da landen Sachen von 2002 usw. im log ^^ fällt dir da noch was ein wie man das genauer filtern kann?
Bitte warten ..
Mitglied: bastla
02.04.2009 um 19:55 Uhr
Hallo d3luxe!
fällt dir da noch was ein
Am ehesten, wenn Du meine obigen Datumsformat-Fragen geklärt haben wirst ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...