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

Datum per Batch auslesen und anzeigen

Frage Entwicklung Batch & Shell

Mitglied: Schuralv

Schuralv (Level 1) - Jetzt verbinden

24.04.2013 um 07:24 Uhr, 2578 Aufrufe, 8 Kommentare

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

noch einen zusatz wie 284 dat.txt der vorzugsweiße ausgeblendet werden sollte.


Bitte um Eure Mithilfe
Mitglied: Endoro
24.04.2013 um 07:56 Uhr
Hallo Schuralv,

ich hatte mal ein Progrämmchen geschrieben, welches die unterschiedlichen Zeiten vom Verzeichniseintrag anzeigt und vergleicht.

  1. Normal: was zeigt "dir" ohne Parameter an
  2. Erzeugt [/TC]: wann wurde die Datei/der Ordner erzeugt
  3. Lesen [/TA]: wann gelesen
  4. 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.

01.
@echo off &setlocal 
02.
set "dirparms=/4 /TC /TA /TW" 
03.
 
04.
for %%a in (/4 /TC /TA /TW) do ( 
05.
 for /f "tokens=1-3*" %%i in ('dir /ON %%a^| findstr /br [0-9]') do ( 
06.
	set "$files_%%a_%%l=%%l" 
07.
	set "$dates_%%a_%%l=%%i" 
08.
	set "$times_%%a_%%l=%%j" 
09.
10.
11.
call:formatLabel normal "Normal" 
12.
call:formatLabel erzeugt "Erzeugt [/TC]" 
13.
call:formatLabel lesen "Lesen [/TA]" 
14.
call:formatLabel schreiben "Schreiben [/TW]" 
15.
if not "%~1"=="" goto:%~1 
16.
 
17.
echo(%normal%%erzeugt%%lesen%%schreiben% 
18.
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do ( 
19.
	setlocal enabledelayedexpansion 
20.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TC_%%j!!$times_/TC_%%j!" (set "TCflag=*") else set "TCflag= " 
21.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TA_%%j!!$times_/TA_%%j!" (set "TAflag=*") else set "TAflag= " 
22.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TW_%%j!!$times_/TW_%%j!" (set "TWflag=*") else set "TWflag= " 
23.
	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 
24.
	endlocal 
25.
26.
goto:eof 
27.
 
28.
:formatLabel 
29.
for /f "delims=:" %%i in ('^(echo(%~2^&echo(^)^|findstr /o $') do set /a len=%%i-3 
30.
setlocal enabledelayedexpansion 
31.
for /l %%i in (%len%,1,18) do set "lf=!lf! " 
32.
endlocal &set "%1=%~2%lf% 
33.
exit /b 
34.
 
35.
:tc 
36.
echo(%normal%  %erzeugt% 
37.
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do ( 
38.
	setlocal enabledelayedexpansion 
39.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TC_%%j!!$times_/TC_%%j!" (set "flag=***") else set "flag=   " 
40.
	echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TC_%%j! !$times_/TC_%%j! !flag! %%j 
41.
	endlocal 
42.
43.
goto:eof 
44.
 
45.
:ta 
46.
echo(%normal%  %lesen% 
47.
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do ( 
48.
	setlocal enabledelayedexpansion 
49.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TA_%%j!!$times_/TA_%%j!" (set "flag=***") else set "flag=   " 
50.
	echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TA_%%j! !$times_/TA_%%j! !flag! %%j 
51.
	endlocal 
52.
53.
goto:eof 
54.
 
55.
:tW 
56.
echo(%normal%  %schreiben% 
57.
for /f "tokens=1*delims==" %%i in ('set $files_/4_') do ( 
58.
	setlocal enabledelayedexpansion 
59.
	if not "!$dates_/4_%%j!!$times_/4_%%j!"=="!$dates_/TW_%%j!!$times_/TW_%%j!" (set "flag=***") else set "flag=   " 
60.
	echo(!$dates_/4_%%j! !$times_/4_%%j! !flag! !$dates_/TW_%%j! !$times_/TW_%%j! !flag! %%j 
61.
	endlocal 
62.
63.
goto:eof 
64.
 
65.
endlocal
Ich habe das nur zum privaten Gebrauch gedacht, es erfüllt also keine wie auch immer gearteten professionellen Ansprüche. Viel Spass.


Gruss!
Bitte warten ..
Mitglied: Schuralv
24.04.2013 um 08:14 Uhr
Vielen Dank für die schnelle Antwort.
Damit ich das richtig verstehe muss ich einfach dir mit /TW ergänzen?
also:

:start
CLS
echo off
echo.
echo
echo # Datei Suchen #
echo
echo Gib Datei ein:
set /p dat=
echo Datei: %DAT%
dir /TW \D\Daten\%DAT%.* > dat.txt
dir *.txt|findstr /i dat.txt
pause
goto start
Bitte warten ..
Mitglied: Endoro
24.04.2013 um 08:25 Uhr
Den Zwischenschritt mit "dat.txt" kannst du auch einsparen, zB.:

01.
dir /TW file.txt | findstr /i file.txt
Bitte warten ..
Mitglied: Schuralv
24.04.2013 um 08:45 Uhr
Jawohl super danke

kleine Frage noch
der gibt mir dann noch 0 file.txt aus rechts vom Datum, kann man das noch irgendwie ausblenden?
Bitte warten ..
Mitglied: Endoro
24.04.2013 um 09:13 Uhr
Du kannst den Befehl dazu einfach in eine Forschleife packen und dir den ersten Token ausgeben lassen (was standardmässig passiert):

01.
for /f %%i in ('dir /TW file.txt ^| findstr /i file.txt') do echo %%i
Gruss!
Bitte warten ..
Mitglied: Schuralv
24.04.2013 um 09:20 Uhr
super das einzige was noch fehlt ist die uhrzeit dann wäre die Sache erledigt
Bitte warten ..
Mitglied: Endoro
24.04.2013 um 09:26 Uhr
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:

01.
for /f "tokens=1,2" %%i in ('dir /TW file.txt ^| findstr /i file.txt') do echo %%i %%j
.. und für USA, Japan:
01.
for /f "tokens=1-3" %%i in ('dir /TW file.txt ^| findstr /i file.txt') do echo %%i %%j %%k

Gruss!
Bitte warten ..
Mitglied: Schuralv
24.04.2013 um 09:34 Uhr
Der erste hat gereicht.
Ich danke dir vielmals für die Hilfe
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Variable per Batch auslesen und in Registry schreiben (1)

Frage von Zendara zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
CMS
Lokales Wordpress im LAN - wie aufsetzen? (16)

Frage von Static zum Thema CMS ...

Java
gelöst Net user per script aus txt oder csv für FTP (15)

Frage von OlliPWS zum Thema Java ...

Exchange Server
Microsoft Exchange Weiterleitung mit anderer primären E-Mail Adresse (14)

Frage von Rene12345 zum Thema Exchange Server ...

LAN, WAN, Wireless
IP im privaten Netz nicht erreichbar (14)

Frage von guntis zum Thema LAN, WAN, Wireless ...