mtb4ever
Goto Top

Datei Liste von Ordner mit Änderungsdatum

Hallo,

also ich habe folgendes vor.

Ich habe mehrere Ordner mit unterOrdnern liegen aber alle z.B. unter c:\test\. und jetzt möchte ich aus den Ordner + unterOrdner eine Dateiliste haben wo man sieht wann Datei letzte Mal geändert wurde.

Als Beispiel:

benutzer.txt 23.06.2007 12:45
Setup.exe 01.01.2006 15:58

so in etwa!

Am besten wäre da ein Excel Makro das ich liste immer noch Mal bearbeiten kann. Oder gibt es da sogar Extra Programm für was das kann ?

MfG

MTB

Content-ID: 71030

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

Ausgedruckt am: 18.11.2024 um 11:11 Uhr

bastla
bastla 16.10.2007 um 11:47:12 Uhr
Goto Top
Hallo MTB4ever!

Auf die Schnelle könntest Du dafür direkt an der Kommandozeile eingeben:
for /f "delims=" %i in ('dir C:\test /s /b /a-d') do @echo %i;%~ti > C:\Liste.txt  
Damit wird der Dateiname samt Pfad (was ich bei Unterordnern sinnvoll finde) und Datum und Uhrzeit in die Datei C:\Liste.txt geschrieben. Diese kannst Du dann einfach in Excel importieren.

Falls Du tatsächlich nur den Dateinamen haben wolltest, würde die Zeile so lauten:
for /f "delims=" %i in ('dir C:\test /s /b /a-d') do @echo %~nxi;%~ti > C:\Liste.txt  

Grüße
bastla

[Edit] "/a-d" ergänzt, um Verzeichnisse auszuschließen [/Edit]
MTB4ever
MTB4ever 17.10.2007 um 11:13:23 Uhr
Goto Top
bei den befehl macht er leider nur eine datei
bastla
bastla 17.10.2007 um 11:43:27 Uhr
Goto Top
Hallo MTB4ever!

Da ist leider ein">" auf der Strecke geblieben ... face-sad

Richtig heißt es:
for /f "delims=" %i in ('dir C:\test /s /b /a-d') do @echo %i;%~ti >> C:\Liste.txt  

Grüße
bastla
MTB4ever
MTB4ever 19.10.2007 um 11:35:42 Uhr
Goto Top
Hallo bastla,

jo so funktioniert es!

noch eine andere Frage:

ist es möglich, dass in eine Batch Datei so einzubauen, dass wenn man Batch Datei startet wie so ein Popup (falls nicht anders möglich auch cmd Zeile zum eingeben) aufgeht wo man
1. Pfad eingibt von welchen Verzeichnis Liste erstellt werden soll (z.B. c:\Programme\Microsoft\)
2. Pfad wo es Liste speichern soll und unter welchen Namen (z.B. "C:\Dokumente und Einstellungen\User\Desktop\Inhaltsverzeichnis.txt").

Wenn dies möglich wäre wer es perfekt!

PS:

Habe einige Ordner die ich ausschließen möchte is das möglich ? bzw die ordner die ich in der Liste haben will haben alle gleich anfangsnamen bei den ordner: z.B. Ordner test1help, Ordner test2config

MfG

MTB
Biber
Biber 19.10.2007 um 15:51:12 Uhr
Goto Top
Moin MTB4ever,

du kannst diese Benutzerinteraktion auch in einen Batch einbauen - allerdings nicht ohne Hilfstools als Popupfenster.
Das Verzeichnisse-Ausschließen ist auch machbar...
...bei beiden Anforderungen wäre für mich die Frage, wie komfortabel das denn werden soll oder muss.

Ich würde diese Variante zwar wahrscheinlich auch weiterhin als eine CMD-Zeile direkt abfeuern, aber stelle es hier mal als formatierten Batch hin:

@echo off & setlocal
Set /P "StartDir=Bitte Startverzeichnis eingeben: "  
Set /P "Log=Bitte LogDatei (ggf. mit Pfad): "  
Set /P "exclude=Ausschliessen [Anfang des Ordnernamens]: "  
If [%exclude%]== set "exclude=#####"  
for /f "delims=" %%i in ('dir "%StartDir%" /s /b /a-d^|find /v /i "\%exclude%"') do @echo %%i;%%~ti >>%log%  

Gruß
Biber
[Edit] 22.10. Tippfehler (fehlendes abschliessendes Anführungszeichen) berichtigt.
Siehe Post von MTB4ever unten.
[/Edit]
bastla
bastla 19.10.2007 um 18:09:21 Uhr
Goto Top
@Biber
Fällt VBS unter Hilfstool?

@mtv4ever
Eine Variante unter Verwendung von temporärem VBS könnte schematisch etwa so aussehen (wobei die Funktionsfähigkeit der Dateiauswahl vom verwendeten Betriebssystem [>= XP] abhängt):
@echo off & setlocal
set "Verz=%temp%\VerzeichnisHolen.vbs"  
echo Set V=CreateObject("Shell.Application").BrowseForFolder(0, "Verzeichnis wählen", 16, 17)>"%Verz%"  
echo If Not TypeName(V)="Nothing" Then Set B=V.Self: WScript.Echo B.Path>>"%Verz%"  
set Quelle=
for /f "delims=" %%i in ('cscript //nologo "%Verz%"') do set "Quelle=%%i"  
if not defined Quelle goto :eof

set "Datei=%temp%\DateiHolen.vbs"  
echo Set objDialog=CreateObject("UserAccounts.CommonDialog"):objDialog.Filter="Alle (*.*)": objDialog.InitialDir="C:\">"%Datei%"  
echo objDialog.Flags=^&H800+^&H4+^&H8:intResult=objDialog.ShowOpen:WScript.Echo objDialog.FileName>>"%Datei%"  
set Ziel=
for /f "delims=" %%i in ('cscript //nologo "%Datei%"') do set "Ziel=%%i"  
if not defined Ziel goto :eof

for /f "delims=" %i in ('dir "%Quelle%" /s /b /a-d') do @echo %i;%~ti >>"%Ziel%"  

del "%Verz%" & del "%Datei%"  

Schön finde ich das allerdings nicht, und die noch fehlende "Exclude"-/"Include"-Maskeneingabe sollte konsequenter Weise auch per Popup erfolgen, sodass dann tatsächlich daran zu denken wäre, das Ganze durchgängig über VB(A/S) abzuwickeln ...

Trotzdem noch eine Anmerkung zur Dateiauswahl: Den gewünschten Dateinamen musst Du (falls nicht eine vorhandene Datei überschrieben werden soll) natürlich in das entsprechende Feld selbst eintragen.

Grüße
bastla
Biber
Biber 19.10.2007 um 18:33:45 Uhr
Goto Top
Moin bastla,

seh ich genauso wie Du.... das mag fliegen, aber sieht absolut hässlich aus.
Dann lieber, wenn denn wirklich diese Startordner/LogDateiname/Exclude-Geschichte als Parameter abgefragt werden muss, EIN VBx-Skriptchen aus einem Guss und viel Bunt und jedes Detail darf man/frau ändern.
Dann hast Du in zwei Jahren eine selbstgeschriebene "MBTBackup 4.0 Ultra"- Applikation, die im *.msi-Format auf Heft-DVDs mit beigelegt wird.

Oder du sagst: Hey, ich will doch nur jeden Freitagabend mal mein Zeugs sichern vor der Tagesschau - dann läuft es auf die drei oder vier schmucklosen Batchzeilen raus.

Aber dieses Nicht-Fisch-Nicht-Fleisch-Skript dort oben....gefällt mir auch nicht.

Grüße
Biber
MTB4ever
MTB4ever 22.10.2007 um 08:21:33 Uhr
Goto Top
Hallo,

also deine Batch datei ohne zusatz tool gefällt mir ganz gut:

ich gebe es so ein:

E:\>"Neu Textdokument.bat"
Bitte Startverzeichnis eingeben: E:\temp
Bitte LogDatei (ggf. mit Pfad): e:\test.txt
Ausschliessen [Anfang des Ordnernamens]: SQL2005

E:\>

aber er erstellt leider keine liste!

wodran liegt das habe es einfach so in die bat datei gepackt:

@echo off & setlocal
Set /P "StartDir=Bitte Startverzeichnis eingeben: "
Set /P "Log=Bitte LogDatei (ggf. mit Pfad): "
Set /P "exclude=Ausschliessen [Anfang des Ordnernamens]: "
If [%exclude%]== set "exclude=#####"
for /f "delims=" %%i in ('dir "%StartDir% /s /b /a-d^|find /v /i "\%exclude%"') do @echo %%i;%%~ti >>%log%

MfG

MTB
Biber
Biber 22.10.2007 um 09:36:40 Uhr
Goto Top
Moin MTB4ever,

okay, die Vorteile einer Handvoll Batch-Zeilen sind ja:
Die Anzahl der fehlerhaften Zeilen ist endlich. Und einzeln testbar.

Wird es denn besser, wenn Du nach %StartDir% in der FOR-Anweisung noch ein Anführungszeichen einfügst?
Da hab ich nämlich eins vergessen... *schäm*

Ich passe es oben in meinem Schnipsel an.

Sorry
Biber
MTB4ever
MTB4ever 22.10.2007 um 10:53:18 Uhr
Goto Top
Hallo Biber,

ja danke so funktioniert es einwandfrei!

MfG MTB