brainless-dj
Goto Top

Ordnerliste mit DIR -B Befehl, Ausgabeformat mit Datum?

Hallo,

ich habe eine Batch-Datei erstellt welche mir alle Unterordner von einem Hauptordner in eine TXT Datei schreibt.
recht einfach mit dir /b >>"W:\Lager\Ordnerliste.txt"
ich nutze den /b weil ich die Kopf und Fußdaten des normalen dir Befehls nicht möchte.

was mir jetzt allerdings fehlt ist das Datum an dem die jeweiligen Ordner erstellt wurden.
gibt es hier noch einen Trick oder ein Tool mit dem ich das hinkriegen kann?
als Output hätte ich gerne "Unterordner1 [TAB] ErstelltDatum"

wenn einer von euch hier ne Lösung hat wär das super.
ich grübel und suche schon lange...

Grüße
Frank
Kommentar vom Moderator Biber am Jun 19, 2011 um 17:56:40 Uhr
Ich gehe mal davon aus, dass ein Batchschnipsel ausreicht und verschiebe den Beitrag von "Tools & Utilities" nach "Batch & Schnell"

Content-Key: 168269

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

Printed on: April 19, 2024 at 01:04 o'clock

Member: Friemler
Friemler Jun 19, 2011 at 17:35:43 (UTC)
Goto Top
Hallo Brainless-DJ,

wenn es ein bisschen einfacher als Deine Vorgabe sein darf:
@echo off

setlocal


set "SrcDir=xxxx"  
set "OutputFile=W:\Lager\Ordnerliste.txt"  

(for %%d in ("%SrcDir%\*.*") do (  
   echo %%~td   %%~fd
 )
) > "%OutputFile%"  

Das Verzeichnis, dessen Inhalt Du ausgegeben haben willst, musst Du in die Variable SrcDir statt dem xxxx eintragen.

Das liefert in der ersten Spalte das Datum und in der zweiten Spalte die Zeit der letzten Änderung. In der dritten Spalte wird der vollständige Pfad zu den Dateien angezeigt. Wenn Du nur die Dateinamen haben willst, ersetze in Zeile 10 das %%~fd durch %%~nxd.

Gruß
Friemler
Member: Skyemugen
Skyemugen Jun 19, 2011 at 18:27:24 (UTC)
Goto Top
Aloha Friemler,

vielleicht wird ihm die Uhrzeit aber nicht gefallen :P

greetz André

P.S.: so viele Zeilen ... *fg*
Member: Friemler
Friemler Jun 19, 2011 at 18:37:41 (UTC)
Goto Top
Hi Skyemugen,

Zitat von @Skyemugen:
vielleicht wird ihm die Uhrzeit aber nicht gefallen :P

dann soll er sich nochmal melden. Eine zusätzliche FOR /F-Schleife sollte es dann tun.


Zitat von @Skyemugen:
P.S.: so viele Zeilen ... *fg*

Zeilen sparen ist nicht mein Ding. Lieber übersichtlich und verständlich als kurz. Außerdem ist der TO Anfänger.

Schönen Abend
Friemler
Member: Brainless-DJ
Brainless-DJ Jun 19, 2011 at 19:18:37 (UTC)
Goto Top
Nabend!

und vielen Dank für die schnellen Antworten. face-smile

ach, was heist gefallen.... ich brauch die Uhrzeit nicht, aber stören tut es auch nicht.

die Lösung von Friemler funktioniert. allerdings nur für Dateien.
was ich allerdings benötige sind Ordner. und die werden leider nicht gelistet. face-sad

Ausgabe mit Friemlers Zeilen ist:
19.06.2011 21:12 W:\Lager\Ordner\Ordner\Neu Textdokument.txt

aber ich sehe schon, hier sind die Spezialisten, die Lösungist nahe. face-wink

Grüße
Frank
Member: Biber
Biber Jun 19, 2011 at 19:29:47 (UTC)
Goto Top
Moin Brainless-DJ,

willkommen im Forum.
Den noch fehlenden Feinschliff kannst du selbst ganz schnell ergänzen.

Wenn du am CMD-Prompt ein "DIR /?" eingibst, dann werden die die Parameter angezeigt, mit denen du auf "nur Verzeichnisse" eingrenzen kannst.

[Edit]
Wenn du am CMD-Prompt ein "FOR /?" eingibst, dann wird dir der Parameter /D angezeigt, mit dem du auf "nur Verzeichnisse" eingrenzen kannst.
{/Edit]
Dann kannst du den finalen Schnipsel selbst posten.

Grüße
Biber
Member: Brainless-DJ
Brainless-DJ Jun 19, 2011 at 19:35:28 (UTC)
Goto Top
Hi Biber,

das eingrenzen auf Ordner kenne ich für den dir Befehl. wusste zwar nicht dass es der gleiche für die FOR Schleife ist aber gut, man lernt nie aus. ;)
im Schnipsel von Friemler gibt es leider gar keine Ordner in der Ausgabe, also auf Ordner eingegrenzt wäre dann der Output null...

Grüße
Frank
Member: Friemler
Friemler Jun 19, 2011 at 19:50:15 (UTC)
Goto Top
Hallo Brainless-DJ,

OK, dann so:
@echo off

setlocal


set "SrcDir=xxxx"  
set "OutputFile=W:\Lager\Ordnerliste.txt"  

(for /f "tokens=1,3*" %%a in ('dir "%SrcDir%\*.*" ^| findstr "^[0-9].*"') do (  
   if "%%b" equ "<DIR>" (  
     echo %%a  %%b %%c
   ) else (
     echo %%a        %%c
   )
 )
) > "%OutputFile%"  

Dann ist die Uhrzeit auch weg. Aber der Pfad fehlt. Kannst Du den bei Bedarf selbst ergänzen? face-wink

@Biber:
Ich habe es so verstanden:
  • Keinen Header und keine Zusammenfassung
  • Ordner und Dateien anzeigen
  • Nur das Datum, keine Größe, keine Uhrzeit


Gruß
Friemler
Member: Skyemugen
Skyemugen Jun 19, 2011 at 19:51:22 (UTC)
Goto Top
Aloha,

... hö?

wenn du den Parameter /D hinter for klemmst, hast du doch die reine Ausgabe der Ordner ... den Rest einfach so belassen

greetz André
Member: Biber
Biber Jun 19, 2011 at 19:53:14 (UTC)
Goto Top
Moin Brainless-DJ,

also bei mir werden so (nur) die Unterverzeichnisse angezeigt:
>for /D %d in ("f:\temp\*.*") do @echo %~td   %~fd
20.05.2009 16:19   f:\temp\redist
20.05.2009 16:19   f:\temp\readmes
20.05.2009 16:19   f:\temp\licenses

Ich denke, in Friemlers Schnipsel ist ein "/D" verlustig gegangen.
Jedenfalls, FALLS ich das mit dem "Nur.Ordner-anzeigen" richtig verstanden habe.

Grüße
Biber
Member: Skyemugen
Skyemugen Jun 19, 2011 at 19:53:22 (UTC)
Goto Top
Aloha Friemler,

nö, ich lese im EP nur etwas von Ordner und Unterordner, zumal du dir mit dem Header selbst widersprichst :-P (Oder warum die vorherige Schleife auf diese Art mit kompletten Pfad?)

greetz André
Member: Friemler
Friemler Jun 19, 2011 at 19:58:59 (UTC)
Goto Top
Hi André,

Zitat von @Skyemugen:
warum die vorherige Schleife auf diese Art mit kompletten Pfad?

weil ich es nicht eindeutig verstanden habe.

Zitat von @Skyemugen:
ich lese im EP nur etwas von Ordner und Unterordner

Im EP schreibt er, er hätte DIR /b verwendet, das liefert Dateien und Verzeichnisse.

Grüße
Member: Skyemugen
Skyemugen Jun 19, 2011 at 20:01:44 (UTC)
Goto Top
Aloha Friemler,

ja das mag richtig sein, aber für mich zählt eher, was er beschreibt, das dabei rauskommen soll und nicht was er versucht hat und was dabei herauskam face-wink
Und daher lese ich nur: Ordner, Unterordner ... OUTPUT: Unterordner *fg*

greetz André
Member: Brainless-DJ
Brainless-DJ Jun 19, 2011 at 20:05:35 (UTC)
Goto Top
Hi Biber,

ich sagte ja, ich kennen /D für den dir Befehl, für for wusste ich den nicht. es funktioniert nun *freu*
meine Zeile jetzt:
for /D %%d in ("%SrcHD%\*.*") do (echo %%~td %%~nxd) >>"%Output%"

jetzt kuck ich mal ob ich mit deiner Erweiterung das Datum herausbekomme.

übrigens: das mit Unterordnern und Dateien hab ich wohl ein bischen undeutlich beschrieben.
es gibt in meinem Hauptordner keine Dateien, nur Unterordner. deshalb hab ich nicht daran gedacht das zu erwähnen.

Grüße
Frank
Member: Brainless-DJ
Brainless-DJ Jun 19, 2011 at 21:38:39 (UTC)
Goto Top
YEAH! es läuft mit:

for /f "tokens=1,3*" %%a in ('dir "%SrcHD%\*.*" ^| findstr "^[0-9].*"') do (if "%%b" equ "<DIR>" (if "%%c" neq "." (if "%%c" neq ".." (echo %%a %%c >>"%Output%"))))

ohne eure Hilfe hätt ich das wohl nicht geschafft, vielen Dank erstmal!

ist vielleicht nicht der einfachste Weg, aber es läuft so wie ich es benötige.
wenn es eine einfachere Möglichkeit gibt als die vielen equ und neq lasst es mich wissen. face-smile

Grüße
Frank
Member: Friemler
Friemler Jun 19, 2011 at 22:51:28 (UTC)
Goto Top
Hallo Brainless-DJ,

wenn Du die beiden Pseudo-Verzeichnisse . und .. nicht sehen willst, gibt es keine kürzere Möglichkeit. Da Du bei Deiner Methode Dateien und Verzeichnisse nicht mehr unterscheiden kannst, aber beides angezeigt würde wenn Dateien vorhanden wären, solltest du beim DIR-Befehl noch /a:d ergänzen, damit auch nur Verzeichnisse angezeigt werden.

Warum willst Du in einer Batchdatei eigentlich unbedingt einen Einzeiler? Ist ziemlich unübersichtlich...

Gruß
Friemler
Member: Brainless-DJ
Brainless-DJ Jun 20, 2011 at 09:01:21 (UTC)
Goto Top
Moin Friemler,

habe das /a:d eingefügt und dafür das equ <DIR> entfernt. funktioniert immernoch einwandfrei. danke für den Hinweis!

das mit dem Einzeiler ist ganz einfach, als Mehrzeiler läuft es bei mir nicht. desween reduziere ich es zurück auf eine Zeile.

Grüße
Frank
Member: Friemler
Friemler Jun 20, 2011 at 09:42:06 (UTC)
Goto Top
Moin Brainless-DJ,

so sollte es aber laufen (in einem Batchfile, nicht bei direkter Eingabe auf der Konsole):
@echo off

for /f "tokens=1,3*" %%a in ('dir /a:d "%SrcHD%\*.*" ^| findstr "^[0-9].*"') do (  
  if "%%c" neq "." if "%%c" neq ".." (  
     >> "%Output%" echo %%a %%c  
  )
)

Ich habe die Umleitung in die Ausgabedatei vor den ECHO-Befehl gesetzt, damit nach dem %%c die Zeile endet. In Deiner Version wird hinter dem Dateinamen noch ein Leerzeichen in die Datei geschrieben, denn das Leerzeichen zwischen %%c und >> zählt mit. Dieses Leerzeichen in Deiner Version einfach wegzulassen könnte unter bestimmten Umständen zu Fehlern führen.

Wenn Dein Problem damit gelöst ist, setze den Beitrag bitte auch auf gelöst.


Gruß
Friemler
Member: Brainless-DJ
Brainless-DJ Jun 20, 2011 at 09:47:23 (UTC)
Goto Top
Hi,

bei mir wollte das als Mehrzeiler nicht funktionieren.
werd mir das heute Abend nochmal anschauen.
gelöst wird gleich gesetzt.

Grüße
Frank
Member: siebat
siebat Aug 16, 2011 at 13:58:43 (UTC)
Goto Top
Ich arbeite auch gerade daran, eine Dateiauflistung zu erstellen, der erste Beitrag von Friemler hat mir schon ziemlich weitergeholfen. Allerdings kriege ich des nicht weiter umgesetzt, dass ich alle Dateien auch von Unterverzeichnissen mit angezeigt bekomme. Kann mir jemand den Code weiter anpassen, da ich auf dem Thema eine absolute null bin?


so wie es mit der ersten Formel raus kommt ist es schon wirklich i.O.
23.05.2011 14:31 d:\1\01.jpg
23.05.2011 14:31 d:\1\02.jpg
23.05.2011 14:31 d:\1\03.jpg

nur wie schon gesagt werden die Unterordner nicht mit durchsucht bzw. die Dateien in die Log mit reingeschrieben... Die Uhrzeit wäre auch nicht unbedingt von nöten, kann aber auch stehen bleiben...

Vielen dank schon mal für eure hilfe...



wenn es ein bisschen einfacher als Deine Vorgabe sein darf:
> @echo off
> 
> setlocal
> 
> 
> set "SrcDir=xxxx"  
> set "OutputFile=W:\Lager\Ordnerliste.txt"  
> 
> (for %%d in ("%SrcDir%\*.*") do (  
>    echo %%~td   %%~fd
>  )
> ) > "%OutputFile%"  
> 

Das Verzeichnis, dessen Inhalt Du ausgegeben haben willst, musst Du in die Variable SrcDir statt dem xxxx eintragen.

Das liefert in der ersten Spalte das Datum und in der zweiten Spalte die Zeit der letzten Änderung. In der dritten Spalte
wird der vollständige Pfad zu den Dateien angezeigt. Wenn Du nur die Dateinamen haben willst, ersetze in Zeile 10 das
%%~fd durch %%~nxd.

Gruß
Friemler

Member: Skyemugen
Skyemugen Aug 16, 2011 at 14:19:47 (UTC)
Goto Top
Zitat von @siebat:
nur wie schon gesagt werden die Unterordner nicht mit durchsucht bzw. die Dateien in die Log mit reingeschrieben... Die Uhrzeit wäre auch nicht unbedingt von nöten, kann aber auch stehen bleiben...

Aloha,

da meine Laune heute nicht so drollig ist, geb' ich dir die Option kann aber auch stehen bleiben
Ich will mal nicht so sein:

for /r "%SrcDir%" %%d in (*.*) do (  
for /f "tokens=1 delims= " %%s in ("%%~td") do echo %%s   %%~fd  
)

greetz André