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
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
Please also mark the comments that contributed to the solution of the article
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 20, 2024 at 03:04 o'clock
20 Comments
Latest comment
Hallo Brainless-DJ,
wenn es ein bisschen einfacher als Deine Vorgabe sein darf:
Das Verzeichnis, dessen Inhalt Du ausgegeben haben willst, musst Du in die Variable
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
Gruß
Friemler
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
Hi Skyemugen,
dann soll er sich nochmal melden. Eine zusätzliche
Zeilen sparen ist nicht mein Ding. Lieber übersichtlich und verständlich als kurz. Außerdem ist der TO Anfänger.
Schönen Abend
Friemler
dann soll er sich nochmal melden. Eine zusätzliche
FOR /F
-Schleife sollte es dann tun.Zeilen sparen ist nicht mein Ding. Lieber übersichtlich und verständlich als kurz. Außerdem ist der TO Anfänger.
Schönen Abend
Friemler
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
willkommen im Forum.
Den noch fehlenden Feinschliff kannst du selbst ganz schnell ergänzen.
[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
Hallo Brainless-DJ,
OK, dann so:
Dann ist die Uhrzeit auch weg. Aber der Pfad fehlt. Kannst Du den bei Bedarf selbst ergänzen?
@Biber:
Ich habe es so verstanden:
Gruß
Friemler
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?
@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
Moin Brainless-DJ,
also bei mir werden so (nur) die Unterverzeichnisse angezeigt:
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
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
Hi André,
weil ich es nicht eindeutig verstanden habe.
Im EP schreibt er, er hätte
Grüße
weil ich es nicht eindeutig verstanden habe.
Im EP schreibt er, er hätte
DIR /b
verwendet, das liefert Dateien und Verzeichnisse.Grüße
Hallo Brainless-DJ,
wenn Du die beiden Pseudo-Verzeichnisse
Warum willst Du in einer Batchdatei eigentlich unbedingt einen Einzeiler? Ist ziemlich unübersichtlich...
Gruß
Friemler
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
Moin Brainless-DJ,
so sollte es aber laufen (in einem Batchfile, nicht bei direkter Eingabe auf der Konsole):
Ich habe die Umleitung in die Ausgabedatei vor den
Wenn Dein Problem damit gelöst ist, setze den Beitrag bitte auch auf gelöst.
Gruß
Friemler
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
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:
Das Verzeichnis, dessen Inhalt Du ausgegeben haben willst, musst Du in die Variable
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
Gruß
Friemler
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
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...
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,
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é