Datum per Batch auslesen und anzeigen
Hallo Leute ich hab mal eine Frage an euch.
Ich möchte per batch eine Datei in einem bestimmten Pfad suchen und das letzte Änderungsdatum der Datei ausgeben lassen.
Komme bis:
:start
CLS
@echo off
echo.
echo ##########################################
echo # Datei Suchen #
echo ##########################################
echo Gib Datei ein:
set /p dat=
echo Datei: %DAT%
dir \D\Daten\%DAT%.* > dat.txt
dir *.txt|findstr /i dat.txt
pause
goto start
dies gibt jedoch nur jedesmal das Datum des letzten zugriffes, also jedes mal das aktuelle Datum
Bitte um Eure Mithilfe
Ich möchte per batch eine Datei in einem bestimmten Pfad suchen und das letzte Änderungsdatum der Datei ausgeben lassen.
Komme bis:
:start
CLS
@echo off
echo.
echo ##########################################
echo # Datei Suchen #
echo ##########################################
echo Gib Datei ein:
set /p dat=
echo Datei: %DAT%
dir \D\Daten\%DAT%.* > dat.txt
dir *.txt|findstr /i dat.txt
pause
goto start
dies gibt jedoch nur jedesmal das Datum des letzten zugriffes, also jedes mal das aktuelle Datum
noch einen zusatz wie 284 dat.txt der vorzugsweiße ausgeblendet werden sollte.
Bitte um Eure Mithilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205529
Url: https://administrator.de/contentid/205529
Ausgedruckt am: 26.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Schuralv,
ich hatte mal ein Progrämmchen geschrieben, welches die unterschiedlichen Zeiten vom Verzeichniseintrag anzeigt und vergleicht.
Das Script kann entweder mit einem der o.g. Parameter aufgerufen werden oder ohne. Abweichungen zur Anzeige ohne Parameter werden markiert.
Am Code kannst du sehen, wie solche Abfragen gestaltet werden können.
Ich habe das nur zum privaten Gebrauch gedacht, es erfüllt also keine wie auch immer gearteten professionellen Ansprüche. Viel Spass.
Gruss!
ich hatte mal ein Progrämmchen geschrieben, welches die unterschiedlichen Zeiten vom Verzeichniseintrag anzeigt und vergleicht.
- Normal: was zeigt "dir" ohne Parameter an
- Erzeugt [/TC]: wann wurde die Datei/der Ordner erzeugt
- Lesen [/TA]: wann gelesen
- Schreiben [/TW]: letzter Schreibzugriff
Das Script kann entweder mit einem der o.g. Parameter aufgerufen werden oder ohne. Abweichungen zur Anzeige ohne Parameter werden markiert.
Am Code kannst du sehen, wie solche Abfragen gestaltet werden können.
@echo off &setlocal
set "dirparms=/4 /TC /TA /TW"
for %%a in (/4 /TC /TA /TW) do (
for /f "tokens=1-3*" %%i in ('dir /ON %%a^| findstr /br [0-9]') do (
set "$files_%%a_%%l=%%l"
set "$dates_%%a_%%l=%%i"
set "$times_%%a_%%l=%%j"
)
)
call:formatLabel normal "Normal"
call:formatLabel erzeugt "Erzeugt [/TC]"
call:formatLabel lesen "Lesen [/TA]"
call:formatLabel schreiben "Schreiben [/TW]"
if not "%~1"=="" goto:%~1
echo(%normal%%erzeugt%%lesen%%schreiben%
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do (
setlocal enabledelayedexpansion
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TC_%%j!!$times_/TC_%%j!" (set "TCflag=*") else set "TCflag= "
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TA_%%j!!$times_/TA_%%j!" (set "TAflag=*") else set "TAflag= "
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TW_%%j!!$times_/TW_%%j!" (set "TWflag=*") else set "TWflag= "
echo(!$dates_/4_%%j! !$times_/4_%%j! !$dates_/TC_%%j! !$times_/TC_%%j!!TCflag! !$dates_/TA_%%j! !$times_/TA_%%j!!TAflag! !$dates_/TW_%%j! !$times_/TW_%%j!!TWflag! %%j
endlocal
)
goto:eof
:formatLabel
for /f "delims=:" %%i in ('^(echo(%~2^&echo(^)^|findstr /o $') do set /a len=%%i-3
setlocal enabledelayedexpansion
for /l %%i in (%len%,1,18) do set "lf=!lf! "
endlocal &set "%1=%~2%lf%
exit /b
:tc
echo(%normal% %erzeugt%
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do (
setlocal enabledelayedexpansion
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TC_%%j!!$times_/TC_%%j!" (set "flag=***") else set "flag= "
echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TC_%%j! !$times_/TC_%%j! !flag! %%j
endlocal
)
goto:eof
:ta
echo(%normal% %lesen%
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do (
setlocal enabledelayedexpansion
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TA_%%j!!$times_/TA_%%j!" (set "flag=***") else set "flag= "
echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TA_%%j! !$times_/TA_%%j! !flag! %%j
endlocal
)
goto:eof
:tW
echo(%normal% %schreiben%
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do (
setlocal enabledelayedexpansion
if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TW_%%j!!$times_/TW_%%j!" (set "flag=***") else set "flag= "
echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TW_%%j! !$times_/TW_%%j! !flag! %%j
endlocal
)
goto:eof
endlocal
Ich habe das nur zum privaten Gebrauch gedacht, es erfüllt also keine wie auch immer gearteten professionellen Ansprüche. Viel Spass.
Gruss!
Es kommt darauf an, welches Zeitformat du eingestellt hast. Bei den europäischen Formaten genügt der zweite Token. Wenn du ein Zeitformat mit "AM/PM" eingestellt hast, wirst du auch noch den dritten brauchen. Für Europa also:
.. und für USA, Japan:
Gruss!
for /f "tokens=1,2" %%i in ('dir /TW file.txt ^| findstr /i file.txt') do echo %%i %%j
.. und für USA, Japan:
for /f "tokens=1-3" %%i in ('dir /TW file.txt ^| findstr /i file.txt') do echo %%i %%j %%k
Gruss!