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, 2459 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 ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...