efde
Goto Top

Verzeichnisinhalt ausgeben per Batch (2 dir- Abfragen)

Hallo zusammen,
ich habe ein Problem bei einer Batchabfrage, unzwar möchte ich mit dem Befehl

dir | find /i "07.2005"

alle Dateien eines Ordners auflisten die im Juli 2005 erstellt wurden,
soweit sogut nun möchte ich diese herausgefilterten Dateien am besten mit dem befehl dir /b also quasi ohne datum in einem log Datei schreiben (z.b. >juli.log).

Doch ich weiss nicht wie ich die zuvor mit dem dir Befehl sortierten Dateien, jetzt mit dem dir /b Befehl in eine Datei ausgeben kann?

Bei dem Befehl:

dir / B | find /i "07.2005" >juli.log

werden nicht nur die Dateien vom Juli aufgelistet!

Wcihtig ist halt, das alle im Juli erstellten Dateien in dieser Logdatei nur mit dem Namen auftauchen.


Ich habe keine Ahnung wie ich das lösen könnte, habe bereits die Suchfunktion "gequält", aber nichts passendes gefunden.

Kann mir wer helfen.

MfG Heiner

Content-Key: 14119

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

Printed on: April 16, 2024 at 05:04 o'clock

Member: Biber
Biber Aug 07, 2005 at 23:09:56 (UTC)
Goto Top
Moin, Heiner,
das Gerüst wäre:
for /F "tokens=4" %a in ('dir ^|find /V "&ltDIR&gt"^|find "07.2005"') do echo %a >>Juli2005.log      
... vom CMD-Prompt aus,
aber wenn Du Dir das ohnehin nicht jedesmal von einem Zettel abtippen willst, dann mach das in einem Mini-Batch etwas flexibler:
::----LogMirWatt.bat
@echo off
set /P monat="Welches Monat (als 01 bis 12 eingeben)? "  
set /p jahr="Welches Jahr (YYYY) ? "  
for /F "tokens=4" %%a in ('dir /A-D ^|find "%Monat%.%jahr%"') do echo %%a >>%jahr%-%monat%.log  
:: [edit] Um die Ecke gedacht... die alte Variante ist sooo umständlich nicht nötig
::for /F "tokens=4" %%a in ('dir ^|find /V "&ltDIR&gt"^|find "%Monat%.%jahr%"') do echo %%a >>%jahr%-%monat%.log
::[/edit]
ende LogMirWatt.bat

Die Logdateien heißen dann "2005-07.log" etc, aber damit kannst Du bestimmt leben.
Habe jetzt Schnickschnack wie alphabetische Sortierung, Unterverzeichnisse abfackeln und Logdatei löschen weggelassen, nimm es als Skizze.
Wenn Du alle Dateien eines Laufwerks aus dem (z.B.) Juli auflisten willst, würde ich aber den XCopy-Befehl missbrauchen.

Frank /der Biber aus Bremen
Member: efde
efde Aug 08, 2005 at 09:30:39 (UTC)
Goto Top
Vielen Dank schon mal.

Aber irgendwie erzielt die Batch nicht die gewünschte Wirkung, denn bei mir werden vor dem eigentlichen Dateinamen, die im Juli erstellt wurden immernoch das Erstellungsdatum ausgegeben!
Member: Biber
Biber Aug 08, 2005 at 13:58:28 (UTC)
Goto Top
Moin efde,
dein "DIR"-Aufruf bringt eine andere Spalten-Reihenfolge, vermute ich.
Dann musst Du wahrscheinlich an dem FOR-Parameter "Tokens=n" rumspielen.
Bei mir sieht die entsprechende 2005-08.log so aus:
D:\temp>type 2005-08.log
2pbat.bat
Logmirwatt.bat

Works as designed.
Biber
[edit]
Dann teste doch erst mal die schmucklose Rohfassung vom CMD-Prompt aus
for /F "tokens=3-5" %a in ('dir ') do echo %a %b %c  
bis Du weißt, welche Spalte die für Dich brauchbare ist.
[/edit]