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

Dateiänderung seit letzten Aufruf auflisten

Frage Entwicklung Batch & Shell

Mitglied: 106245

106245 (Level 1)

12.04.2012 um 15:33 Uhr, 2714 Aufrufe, 8 Kommentare

Hallo liebe Community,

ich möchte gerne eine Batch-Datei schreiben. Sie soll bei Aufruf aus einer anderen Datei das letzte Aktualisierungsdatum finden, danach in einem Verzeichnis alle Dateien finden, die neuer als das Datum sind und ihren Pfad in einer neuen Datei schreiben.

Bisher habe ich das zusammengebastelt:

adata.txt = Alle Dateien mit Unterverzeichnis
dit.txt = Ausgabedatei mit den neuen Dateien (Pfad)
ae.txt = Datei mit dem Änderungsdatum

rem 1. Liste Verzeichnis auf...
del adata.txt
dir /s /b /o-d /tw >> adata.txt

rem 2. Schreibe alle Dateien mit neueren Änderungsdatum in eine Datei...
del dir.txt
for /f "delims=" %%i in (adata.txt) do ??? >> dir.txt

rem 3. Setze auf aktuelles Datum
rem ???
pause

Und dort, wo ??? steht, wüsste ich nicht weiter... könnt ihr mir helfen? Oder geht das überhaupt so, wie ich das oben versuche?
Mitglied: mathe172
12.04.2012 um 16:34 Uhr
Hallo,

auf was genau soll geachtet werden? Nur Datum? Auch Zeit? Neuer oder auch gleich alt?
Als einen ersten Ansatz vielleicht mal folgendes:
01.
REM Datum im Format JJJJMMTT 
02.
set "Vergleich=20120123" 
03.
for /f "tokens=1-6* delims=.: " %%A in ('dir /a-d') do ( 
04.
if "%%C%%B%%A" GTR "%Vergleich%" echo.%%G 
05.
06.
pause
(ungetestet)

Mit freundlichen Grüßen,
Mathe172
P.S.:Bitte Code-Formatierung benutzen!
Bitte warten ..
Mitglied: 106009
12.04.2012 um 17:32 Uhr
Hi,

Zitat von 106245:
ich möchte gerne eine Batch-Datei schreiben. Sie soll bei Aufruf aus einer anderen Datei das letzte Aktualisierungsdatum
finden,

Alles noch nie dagewesen, nach Verarbeiten von Dateien nach Datum hat hier noch nie jemand gefragt......

Vorschlag: An deiner Stelle würde ich mal die Suchfunktion des Forums nutzen, dann würdest du feststellen, dass dieses Thema in ähnlicher Form fast jede Woche umassend bearbeitet ´wird.
.
Gruß
.
Bitte warten ..
Mitglied: 106245
12.04.2012 um 19:19 Uhr
Hi,

Zitat von 106009:
Verarbeiten von Dateien nach Datum hat hier noch nie jemand gefragt......

Vorschlag: An deiner Stelle würde ich mal die Suchfunktion des Forums nutzen, dan würdest du feststellen, dass dieses
Thema in ähnlicher Form fast jede Woche umassend bearbeitet ´wird.

Dann gib mal "Verarbeiten von Dateien nach Datum" in die Suchfunktion ein
Raus kommen 11 Fragen, wovon mir keine Antwort hilft...
Ich habe auch schon mit anderen Suchbegriffen hier gesucht und auch mit Google gesucht. Und da ich keine befriedigende Antwort gefunden hatte, habe ich hier geschrieben. Wenn dieses Thema immer wieder bearbeitet wird, dann hättest du mir auch gleich die Links zu den Threads schreiben können...


@mathe172: Notfalls nur mit Datum, aber beides überprüfen wäre am Besten. Gleich alt würde nicht dazugehören. Sonst zählt sich die ae.txt mit rein.
Zu dem Code: Also das hatte ich auch als erstes gedacht, aber mein Problem ist, die vollständige Ansicht des Befehls "dir" wäre bei mir ungefähr so:

01.
Datentr„ger in Laufwerk E: ist Volume 
02.
 Volumeseriennummer: 400C-C7B6 
03.
 
04.
 Verzeichnis von E:\Ordner 
05.
 
06.
12.04.2012  18:58    <DIR>          . 
07.
12.04.2012  18:58    <DIR>          .. 
08.
12.04.2012  18:44               342 act.bat 
09.
12.04.2012  18:44             2.166 adata.txt 
10.
12.04.2012  14:27             3.900 changelog.htm 
11.
12.04.2012  18:58                14 dir.bat 
12.
12.04.2012  18:45                 0 dir.txt 
13.
... 
14.
              10 Datei(en)         15.012 Bytes 
15.
               4 Verzeichnis(se), 12.542.431.232 Bytes frei
Damit fallen also ungültige Zeilen an... Wenn ich es ungeändert durchlaufen lasse, habe ich dann das:

01.
 (leere Zeile) 
02.
act.bat  
03.
166 adata.txt  
04.
900 changelog.htm  
05.
dir.txt  
06.
...
Kann man nicht das Datum einer einzelnen Datei überprüfen? Ohne diese nervigen Zeilen, sondern nur die relevanten Daten?

Und zu 3. habe ich die Lösung (durch suchen
) gefunden:
echo %DATE% %TIME% >> ae.txt
Bitte warten ..
Mitglied: 106009
12.04.2012 um 19:53 Uhr
Dann gib mal "Verarbeiten von Dateien nach Datum" in die Suchfunktion ein^^
Raus kommen 11 Fragen, wovon mir keine Antwort hilft...
Was kann ich denn dafür, dass du offenbar nicht in der Lage bist, eine Suchanfrage vernüftig abzusetzen?
Wenn ich in der erweiterten Suche "Datum" eingebe und alle Bereiche durchsuchen lasse, bekomme ich über 2000 Treffer, und wenn ich das nur im passenden Berech suchen lasse, ~560 passende Fragen, 13 Anleitungen, 8 Tipps und über 660 Kommentare. Und da ist nichts Passendes für dich dabeì?

Tut mir leid, aber wenn ich solchen Antworten bekomme, sinkt meine Bereitschaft zur Hilfe auf 0. Mir ist meine Zeit zu schade, Leute, die nicht bereit sind, sich selbst Mühe zu geben, nur zu bedienen, zumal das Thema hier im Forum schon bis zum Erbrechen durchgekaut wurde.
.
Bitte warten ..
Mitglied: mathe172
12.04.2012 um 20:19 Uhr
Hallo,

um die ersten Zeilen zu überspringen(sorry, hab ich in meinem Code vergessen) geht mit "skip=5" in den Parameter von For
Und die Zeit lässt sich mit einem zweiten if vergleichen
Also:
01.
REM Datum im Format JJJJMMTT 
02.
set "VergleichDatum=20120123" 
03.
REM Format HHMM 
04.
set "VergleichZeit=0923" 
05.
for /f "skip=6 tokens=1-6* delims=.: " %%A in ('dir /a-d') do ( 
06.
if "%%C%%B%%A" GTR "%VergleichDatum%" if "%%E%%D" GTR "%VergleichZeit%" echo.%%G 
07.
08.
pause
Mit freundlichen Grüßen,
Mathe172
Bitte warten ..
Mitglied: 106245
13.04.2012 um 12:38 Uhr
Hi,

@106009: Wenn deine Hilfsbereitschaft schon auf null ist und dir die Zeit zu schade ist, warum hast du schon 2 Posts gemacht, die nicht zur Lösung meines Problems beitragen? Und wie willst du genau wissen, ob ich mir keine Mühe gebe?

@mathe172
Danke, ich habe das jetzt so:

01.
@echo on 
02.
 
03.
@echo Liste alle Dateien auf (relativer Pfad)... 
04.
if EXIST adata.txt del adata.txt 
05.
for /f "tokens=6* delims=\" %%i in ('dir /s /b /o-d /tw') do @echo \%%j>> adata.txt 
06.
 
07.
@echo Überprüfe alle Dateien nach Datum... 
08.
set VergleichDatum =< date.txt 
09.
set VergleichZeit =< time.txt 
10.
for /f "skip=6 tokens=1-6* delims=.: " %%A in ('dir /a-d /-c') do (  
11.
if "%%C%%B%%A" GTR "%VergleichDatum%" if "%%E%%D" GTR "%VergleichZeit%" echo.%%G >> ae_temp.txt 
12.
13.
 
14.
@echo Füge relativen Pfad hinzu... 
15.
if EXIST ae.txt del ae.txt 
16.
for /f "delims=" %%S in (ae_temp.txt) do findstr %%S adata.txt >> ae.txt 
17.
 
18.
@echo Aktualisiere Zeit... 
19.
set CURRENTTIME=%TIME:~0,2%%TIME:~3,2% 
20.
@echo %CURRENTTIME% > time.txt 
21.
set ARCHIVNAME=%DATE:~6,6%%DATE:~3,2%%DATE:~0,2% 
22.
@echo %ARCHIVNAME% > date.txt 
23.
 
24.
pause
Jetzt habe ich da nur noch eine Frage...
Ich habe jetzt noch Unterverzeichnisse, von denen ich auch gerne noch die Aktualität überprüfen möchte. Dazu hatte ich mir jetzt gedacht, ich modifiziere die For-Schleife indem ich ein /s zu dem dir hinzufüge, in einer weiteren for-Schleife dann die leeren Zeilen entferne und mir danach die gesamte Zeile aus der Auflistungs-Datei hole. Das wäre bei mir so:
01.
... 
02.
for /f "skip=6 tokens=1-6* delims=.: " %%A in ('dir /a-d /-c') do (  
03.
if "%%C%%B%%A" GTR "%VergleichDatum%" if "%%E%%D" GTR "%VergleichZeit%" echo.%%G >> ae_mit_leerzeichen.txt 
04.
05.
 
06.
for /F %%S in (ae_mit_leerzeichen.txt) do ( 
07.
 echo %%S >> ae_ohne_pfad.txt 
08.
09.
 
10.
if EXIST ae.txt del ae.txt 
11.
for /f "delims=" %%S in (ae_ohne_pfad.txt) do findstr %%S adata.txt >> ae.txt 
12.
 
13.
del ae_ohne_pfad.txt 
14.
del ae_mit_leerzeichen.txt
Dummerweise gibt das jetzt sämtliche Einträge aus. Meine Fehlersuche brachte eventuell das:
01.
set /p VergleichDatum =< date.txt 
02.
@echo "%VergleichDatum%"
Ausgabe ist: "" und nicht das eingegebene Datum. Ich habe es auch mit set VergleichDatum = "20120412" ausprobiert und die Ausgabe ist immer noch "".
Liegt es vielleicht daran? Warum gibt es die Variable nicht richtig aus?
Bitte warten ..
Mitglied: 106009
13.04.2012 um 14:13 Uhr
Zitat von 106245:
@106009: Wenn deine Hilfsbereitschaft schon auf null ist und dir die Zeit zu schade ist, warum hast du schon 2 Posts gemacht,
die nicht zur Lösung meines Problems beitragen? Und wie willst du genau wissen, ob ich mir keine Mühe gebe?

Du bist selbst zu dämlich zu erkennen, dass auch in meinen Antworten Informationen enthalten waren, die dir sehr wohl bei der Lösung deines "Problems" hätten helfen können.
Was soll's: Der geistige Horizont ist eben bei einigen Leuten der Abstand zwischen Kopf und Brett.

EOD
Bitte warten ..
Mitglied: 106245
13.04.2012 um 14:29 Uhr
Mir reichts. Ich hole mir die Antwort von einem anderen Forum.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Userverwaltung
gelöst Mit der PoweShell die lokal angelegten Users eines anderen Rechners auflisten (7)

Frage von M.Marz zum Thema Windows Userverwaltung ...

Microsoft Office
gelöst Einträge untereinander Auflisten (8)

Frage von batchnewbie zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...