joe65
Goto Top

Aktuelle Dateien mit Hilfe einer Batch-Routine suchen

Hallo,

ich möchte mit Hilfe eines Batch-Scriptes alle Dateien, deren Änderungsdatum aktueller ist als ein vorgegebenes Datum in eine Datei "Aktuelle_Dateien.txt" schreiben.

Das von mir erstellte Script kann das aber nicht. Ich weiß nicht was da falsch ist.

Beginn des Scripts:
@echo off
setlocal
cls

echo Aktuelle Dateien im Verzeichnis ermitteln!

set "Ergebnisdatei=Aktuelle_Dateien.txt"

TITLE Aktuelle Dateien ermitteln

set myPath=
set /p myPath=Geben Sie einen Pfad ein:
if /i '%myPath%'=='' (
echo Es wurde kein Pfad eingegeben!
pause
exit
)
if /i not exist %myPath% (
goto eof
)

set myDate=
set /p myDate=Geben Sie ein Datum ein:
echo.
echo myDate=%myDate%

echo Aktuelle Dateien im Verzeichnis %myPath% ermitteln und in eine Ergebnisdatei = %Ergebnisdatei% schreiben!

for /f "delims=" %%i in ('dir "%myPath%\*.*" /s /b') do (
if "%%~ti" GEQ "%myDate%" (
echo %%~fi >> %Ergebnisdatei%
)
)
exit
:eof
echo Ungueltiger Pfad: %myPath%
pause
Ende des Scripts

Content-ID: 213302

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

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

bastla
bastla 03.08.2013 aktualisiert um 18:15:15 Uhr
Goto Top
Hallo joe65!

Es werden so nicht Datumswerte, sondern Strings verglichen - dadurch wäre zB
01.08.2012
größer als
01.07.2013
(weil eben "8" > "7"). Wenn Du das Datum in die Form "JJJJMMTT" bringst, wird der Vergleich funktionieren ...
Du könntest das Ganze aber vereinfachen, indem Du
xcopy /LSY /D:M-T-J "%myPath%" C:\|findstr /vc:"Datei(en) kopiert">"%Ergebnisdatei%"
verwendest.

Grüße
bastla

[Edit] Beispiel vervollständigt [/Edit]
joe65
joe65 03.08.2013 um 18:16:57 Uhr
Goto Top
Hallo bastla,

habe den xcopy - Befehl ins Script eingebaut, geht aber trotzdem nicht.

@echo off
setlocal
cls

echo Aktuelle Dateien im Verzeichnis ermitteln!

set "Ergebnisdatei=Aktuelle_Dateien.txt"

TITLE Aktuelle Dateien ermitteln

set myPath=
set /p myPath=Geben Sie einen Pfad ein:
if /i '%myPath%'=='' (
echo Es wurde kein Pfad eingegeben!
pause
exit
)
if /i not exist %myPath% (
goto eof
)

set myDate=
set /p myDate=Geben Sie ein Datum ein:
echo.
echo myDate=%myDate%

echo Aktuelle Dateien im Verzeichnis %myPath% ermitteln und in eine Ergebnisdatei = %Ergebnisdatei% schreiben!

rem xcopy /L /D:M-T-J

for /f "delims=" %%i in ('dir "%myPath%\*.*" /s /b') do (
xcopy /L /D:%myDate% >> %Ergebnisdatei%
)

exit
:eof
echo Ungueltiger Pfad: %myPath%
pause
bastla
bastla 03.08.2013 um 18:20:26 Uhr
Goto Top
Hallo joe65!

Der "xcopy"-Befehl (ich habe das Beispiel oben inzwischen komplettiert) ersetzt die gesamte "for"-Schleife ...

Grüße
bastla

P.S.: Verwende für Batch-Schnipsel doch bitte "Code"-Formatierung (lässt sich auch nachträglich noch durchführen) ...
joe65
joe65 03.08.2013 um 18:29:33 Uhr
Goto Top
Hallo bastla,

Danke für deine Hilfe. Jetzt funktioniert die Sache.
bastla
bastla 03.08.2013 um 18:49:01 Uhr
Goto Top
Hallo joe65!
Jetzt funktioniert die Sache.
... bis auf die "Code"-Formatierung ...

Grüße
bastla