Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Erstellungsdatum mit Pfad auslesen

Mitglied: manni04

manni04 (Level 1) - Jetzt verbinden

01.10.2011, aktualisiert 18.10.2012, 3387 Aufrufe, 27 Kommentare

Hallo an alle,

ich versuche gerade eine Dateiliste zu erstellen die mir das Erstellungsdatum und Uhrzeit, die Dateigröße und den Pfad ausliest. Ich habe es auch schon soweit gebracht das ich das Datum mit Uhrzeit, die Dateigröße und den Dateinamen erhalte, allerdings bräuchte ich auch noch den Pfad der Datei. Ich hatte bereits eine ähnliche Methode, allerdings habe ich dort nur das Änderungsdatum erhalten:
01.
FOR /F "delims=" %%i in ('dir /b /s  /O-D /A-D *.*') do echo %%~ti§%%~zi§%%~dpi§%%~nxi§%%~xi >>test.txt
Hier konnte ich am Ende sehr einfach angeben, welche Werte und in welcher Reihenvolge ich die ausgabe haben wollte. Außerdem war es Möglich zwischen den Parametern Trennzeichen einzufügen, das sollte auch gehen. (Hier habe ich das Trennzeichen "§" verwendet)
(die Funktion /Tc im DIR Befehl funktioniert hir anscheinend nicht)

Meine momentane Lösung sieht so aus:
01.
FOR /F "Tokens=1*" %%f in ('dir /s /a-D /Tc ^|find "."') do echo %%f %%g >>test.txt
Bei meiner jetztigen Funktion kann ich diese Parameter nicht verwenden, kenn mich dazu mit Batch leider zu wenig aus, um es selber zu schaffen. Es wäre außerdem sehr schön wenn ich auch gleich die Dateierweiterung schreiben könnte, ist aber nicht umbeding nötig.

Vielleicht kann mir ja auch einfach jemand eine Liste sagen, in der ich die Parameter für diese Funktion finde, ähnlich wie in der FOR-Hilfe ganz am Ende die Auflistung der Möglichkeiten.

Am Ende sollte es dann in etwa so aussehen:
01.10.2011 22:11 123456 Pfad Datei_mit_Dateierweiterung .txt
01.10.2011 22:12 123456 Pfad Datei2_mit_Dateierweiterung .txt

Hoffe ihr könnt mir helfen. Danke schon mal im Voraus.

Lg manni
Mitglied: bastla
02.10.2011, aktualisiert 18.10.2012
Hallo manni04!

War denn dieser "ähnliche" Beitrag (gleich da unten ) wirklich nicht zu finden?

Grüße
bastla
Bitte warten ..
Mitglied: manni04
02.10.2011 um 00:56 Uhr
Sorry hab ich echt übersehen.
Aber irgendwie bekomm ich das nicht zum laufen. Vlt kannst du mir ja sagen was ich falsch mache.

Habe diese Varianten getestet, keine funktioniert bei mir. Hab doppelte Prozentzeichen wie du in deinem Post damals geschrieben hast:

01.
(for /f "delims=" %i in ('dir /s /b /a-d C:\') do @for /f "tokens=1-2" %a in ('dir /tc "%i"^|findstr /i /c:"%~nxi"') do @echo %a %b "%~dpi" "%~nxi")>>test.txt
02.
(for /f "delims=" %%i in ('dir /s /b /a-d C:\') do @for /f "tokens=1-2" %%a in ('dir "%%i"^|findstr /i /c:"%%~nxi"') do @echo %%a %%b %%i)>>test.txt
03.
(for /f "tokens=1-3*" %%i in (' dir /s /a-d /tc ^|findstr /b [0-9] ') do @echo %%i %%j %%l)>>test.txt
Grüße
Manni
Bitte warten ..
Mitglied: bastla
02.10.2011 um 01:02 Uhr
Hallo manni04!

Mit Deinen Vorgaben etwa so:
(for /f "delims=" %%i in ('dir /s /b /a-d') do for /f "tokens=1-2" %%a in ('dir /tc "%%i"^|findstr /i /c:"%%~nxi"') do echo %%a %%b§%%~zi§%%~dpi§%%~nxi)>test.txt
Grüße
bastla

[Edit] >> auf > reduziert, um eine vorhandene "test.txt" zu überschreiben [/Edit]
Bitte warten ..
Mitglied: manni04
02.10.2011 um 01:14 Uhr
Hallo bastla

Danke für die raschen Antworten, aber jedes mal wenn ich die Batch-Datei starte, wird sie sofort wieder geschlossen obwohl ich am Ende eine PAUSE gesetzt hab. Es wird auch keine Datei erstellt.
Direkt in der CMD-Shell wird die Datei erstellt allerdings ist die Ausgabe nicht ganz korrekt:

02.10.2011 01:11õ225õW:\Temp\Neuer Ordner\õtest.txt

Anscheinend werden alle Leerzeichen durch dieses Sonderzeichen ersetzt, kann man das auch noch umgehen?

Grüße manni
Bitte warten ..
Mitglied: bastla
02.10.2011 um 01:27 Uhr
Hallo manni04!
Anscheinend werden alle Leerzeichen durch dieses Sonderzeichen ersetzt
Nö - "dieses Sonderzeichen" ist das gewünschte "§" - allerdings als ANSI-Zeichen (ich hatte den Code direkt im Browser ergänzt) - wenn Du das Ergebnis im Editor ansiehst, sollte es passen (ansonsten verwende eben "õ") ...

Bei mir läuft's übrigens (in der geposteten Fassung) als Batch (wobei ich ein vorhergehendes "@echo off" vorausgesetzt hatte - ansonsten die "@" der "Originalfassung" beibehalten) ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.10.2011 um 01:30 Uhr
Hallo manni04,

bei mir funktioniert bastlas Zeile. Allerdings sehr langsam.
Probier mal folgendes:
01.
@echo off
02.
call :proc "%cd%"
03.
pause
04.
goto :eof
05.

06.
:proc
07.
for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 "%~1"^|findstr /vbc:" "') do >>"test.txt" echo %%f§%%g§%%h§%~1§%%i
08.
for /f "delims=" %%i in ('dir /ad /b "%~1"') do call :proc "%~1\%%i"
09.
goto :eof 
Die Paragraphen kannst du natürlich auch durch Leerzeichen ersetzen.

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
02.10.2011, aktualisiert 18.10.2012
@rubberman
Allerdings sehr langsam.
... deswegen auch mein seinerzeitiger Kommentar dazu ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.10.2011 um 01:38 Uhr
@bastla

Mein Ansatz "geht" auch nur
Zig mal CALL und FINDSTR hinterlassen ihre Spuren, was die Laufzeit solcher Scripts angeht.

Grüße
rubberman
Bitte warten ..
Mitglied: manni04
02.10.2011 um 01:41 Uhr
@ bastla
Ja stimmt funktioniert wirklich, hatte anscheinend irgendwo einen Fehler drinnen. @echo off war immer drinnen.

@rubberman
Die Lösing ist ja auch sehr interessant, scheint auch wirklich schneller zu sein. Auf jeden Fall kommt aber das selbe Ergebnis raus, das ist das wichtigste ;)

Danke auf jeden Fall für eure Hilfe und die raschen Antworten.

PS: wenn ich den Pfad, der durchsucht werden soll, angeben möchte, funktioniert das wenn ich in der 2. Zeile von rubbermans Scrip das "cd" durch den Pfad austausche?

Grüße
manni
Bitte warten ..
Mitglied: bastla
02.10.2011 um 01:44 Uhr
Hallo manni!
funktioniert das wenn ich in der 2. Zeile von rubbermans Scrip das "cd" durch den Pfad austausche?
In der Zeit, die Du für das Posten dieser Frage gebraucht hast, hättest Du das schon testen können ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.10.2011 um 01:46 Uhr
Hallo manni04,

ja, einfach "%cd%" durch bspw. "c:\dein\verzeichnis" ersetzen, sollte funktionieren.

Grüße
rubberman

<edit: @bastla Völlig d'accord \>
Bitte warten ..
Mitglied: manni04
02.10.2011 um 01:47 Uhr
Hallo bastla

Hab ich eh auch getestet, wollte nur sicher gehen dass das dann auch wirklich funktioniert (vorallem bei größeren Verzeichnissen), war mir nicht ganz sicher.

Grüße manni
Bitte warten ..
Mitglied: manni04
02.10.2011 um 01:48 Uhr
@rubberman

Ok danke!

Grüße manni
Bitte warten ..
Mitglied: bastla
02.10.2011 um 02:04 Uhr
@rubberman
Zumindest "call" ließe sich ja vermeiden (ungetestet):
01.
@echo off & setlocal
02.
set "Ordner=W:\TEMP\"
03.
set "Liste=D:\test.txt"
04.

05.
pushd "%Ordner%"
06.
(for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 2^>nul^|findstr /vbc:" "') do echo %%f§%%g§%%h§%Ordner%§%%i)>"%Liste%"
07.
for /f "delims=" %%a in ('dir /s /b /ad') do (
08.
    pushd "%%a"
09.
    for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 2^>nul^|findstr /vbc:" "') do echo %%f§%%g§%%h§%%~a§%%i
10.
    popd
11.
)>>"%Liste%"
12.
popd
- ist allerdings nicht so schön wie Deine Rekursion.

Der Pfad für die "Liste" muss übrigens immer vollständig angegeben werden ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.10.2011 um 02:21 Uhr
@bastla

Die Idee ist gut, du erwischt aber irgendwie nicht die gesamte Tiefe der Verzeichnisstruktur.
Im Test:
4704 Dateien bei meinem Script
2352 Dateien bei deinem Script

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
02.10.2011 um 02:29 Uhr
@rubberman
Könnte daran liegen, dass bei mir die Liste bei jedem Durchlauf neu erstellt wird ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.10.2011 um 02:35 Uhr
@bastla

Vollkommen richtig. Nachdem ich die Datei vor dem Lauf gelöscht habe, spucken mir beide Scripts auch die gleiche Anzahl Dateien aus. Brett vorm Kopf -- ich glaube ich geh erst mal 'ne Stunde schlafen

Grüße
rubberman
Bitte warten ..
Mitglied: manni04
04.10.2011 um 22:01 Uhr
Hallo nochmal,

vlt kann mir ja nochmal einer von euch helfen, hätte nämlich gerne gewusst, wo ich die Parameter für die Ausgabe finden kann, also welche Möglichkeiten ich noch habe, als die bereits verwendeten.
Oder vlt kann mir ja auch einer einfach kurz zusammenschreiben was es sonst noch gibt.

Grüße
manni
Bitte warten ..
Mitglied: bastla
04.10.2011 um 22:09 Uhr
Hallo manni04!
vlt kann mir ja nochmal einer von euch helfen
Vlt - wenn Du erklären könntest, was Du genau wissen willst (und - weil das oben in etwa so angeklungen ist - nein: ein Pendant zu "%%~ti", welches das Erstellungsdatum verwendet, gibt es nicht) ...

Grüße
bastla
Bitte warten ..
Mitglied: manni04
04.10.2011 um 22:15 Uhr
Hallo bastla

Wollte einfach nur sehen was es noch für Möglichkeiten gibt, falls ich dieses Skript später mal erweitern möchte, also in welcher Hilfe von Batch ich das finden kann, bzw unter welchem Befehl.
Möchte nur wissen ob ich die Zeichenkette "%%f§%%g§%%h§%~1§%%i" um weitere Parameter erweitern kann.

In meinem ursprünglichen Skript habe ich die Parameter in der Batch-Hilfe vom Befehl FOR gefunden, diese funktionieren da ja aber nicht mehr, deshalb frage ich.

Lg
manni
Bitte warten ..
Mitglied: bastla
04.10.2011 um 22:26 Uhr
Hallo manni04!

Welche weiteren Parameter sollten das den sein? %%f bis %%i entsprechen einfach den 4 (oder genauer 3 + 1 für den dann noch folgenden Rest) Teilen ("tokens") in welche die "dir"-Zeile, zB
02.10.2011  12:30            86.376 Nur als Test.txt
anhand des (Default-)Trennzeichens "Leerzeichen" zerlegt wird ...
... die Parameter in der Batch-Hilfe vom Befehl FOR gefunden, diese funktionieren da ja aber nicht mehr
Das ist so nicht ganz richtig - wenn sich eine Schleifen- oder Parameter- (wie zB %1) Variable auf eine konkrete Datei bezieht, kannst Du sehr wohl (innerhalb der Schleife oder im aufgerufenen Unterprogramm) noch zB "%%~za" oder etwa "%~dp1" verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: manni04
04.10.2011 um 22:43 Uhr
Hallo bastla!

Welche weiteren Parameter sollten das den sein?

Dachte nur das man da z.B. noch das Änderungsdatum oder ähnliches dazu ausgeben könnte.

Das ist so nicht ganz richtig - wenn sich eine Schleifen- oder Parameter- (wie zB %1) Variable auf eine konkrete Datei bezieht, kannst Du sehr wohl (innerhalb der Schleife oder im aufgerufenen Unterprogramm) noch zB "%%~za" oder etwa "%~dp1" verwenden.

Ok, dazu kenn ich mich dann leider zu wenig in Batch aus um das umzusetzen, aber trotzdem danke für die Hilfe.

Grüße
manni
Bitte warten ..
Mitglied: bastla
04.10.2011 um 22:50 Uhr
Hallo manni04!
Dachte nur das man da z.B. noch das Änderungsdatum oder ähnliches dazu ausgeben könnte.
Mit "Änderungsdatum" kann ich etwas anfangen - bei meinem letzten Vorschlag wäre das zB "%%~ti" (da vorher in den betrachteten Ordner "%%a" gewechselt wurde, genügt der Dateiname in "%%i" als Bezug auf die Datei) ...

... "ähnliches" ist mir aber zu nebulos ...

Grüße
bastla
Bitte warten ..
Mitglied: manni04
04.10.2011 um 23:09 Uhr
Hallo bastla

... bei meinem letzten Vorschlag wäre das zB "%%~ti" (da vorher in den betrachteten Ordner "%%a" gewechselt wurde, genügt der Dateiname in "%%i" als Bezug auf die Datei) ...

Wie gesagt sogut kenn ich mich dann leider auch nicht aus, aber trotzdem danke.

... "ähnliches" ist mir aber zu nebulos ...

Damit hab ich einfach nur die restlichen Parameter der FOR-Schleife gemeint, aber is nicht so wichtig. War nur interesse halber.

Lg manni
Bitte warten ..
Mitglied: manni04
04.10.2011 um 23:25 Uhr
Jetzt ist mir noch aufgefallen, dass Umlaute und Sonderzeichen falsch dargestellt werden. Kennst du dafür auch eine Lösung, den Zeichensatz gleich in Batch umzuwandeln?

Meine Testdatei "ÜüÄäÖöß!§$%&()=`´'#;µ²³{[]}^°.txt" und das Ergebnis "šŽ„™”á!õ$%&()=`ï'#;æýü{[]}^ø.txt"

Grüße
manni
Bitte warten ..
Mitglied: bastla
05.10.2011 um 07:56 Uhr
Hallo manni04!

Setz an den Anfang des Batches die Zeile
chcp 1252>nul
Grüße
bastla
Bitte warten ..
Mitglied: manni04
05.10.2011 um 19:31 Uhr
Hallo bastla!

Super, funktioniert einwandfrei. Danke für die tolle Hilfe!

Grüße
manni
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datei nach Erstellungsdatum verschieben
Frage von Kugelschreiber1Batch & Shell2 Kommentare

Hallo, ich möchte über eine Batch-Datei Dateien, die älter als 20 Tage sind, in einen anderen Ordner verschieben. Dabei ...

Batch & Shell

Datein nach Erstellungsdatum in Unterornder verschieben

gelöst Frage von xyxy-yxBatch & Shell20 Kommentare

Hallo, ich möchte alle Dateien nach Erstellungsdatum in datumbenannte Unterordner kopieren und eventuell diesen auch erstellen, wenn er nicht ...

E-Mail

Lotus Notes 8.5 - Erstellungsdatum eines Termins

gelöst Frage von MausekuchenE-Mail4 Kommentare

Hallo zusammen! Kann man bei Lotus Notes im Kalender bei einem selbst eingetragenen Termin sehen, wann man ihn erstellt ...

Batch & Shell

Powershell Pfad überprüfen

gelöst Frage von H41mSh1C0RBatch & Shell11 Kommentare

Hi @ PS Profis, Irgendwie seh ich den Wald vor lauter Bäumen nicht. (oder es ist einfach Zeit für ...

Neue Wissensbeiträge
Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 StundeSicherheit1 Kommentar

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Microsoft Office
TEAMS - Skype for business
Tipp von Nebellicht vor 2 StundenMicrosoft Office

Hallo, ms ersetzt Skype for business durch TEAMS. Also, nicht wundern wenn mit der OFFICE365 Umgebung kein Skype for ...

Windows 10

Windows 10: Cortana und die Suche gehen bald wieder eigene Wege

Information von Frank vor 5 StundenWindows 101 Kommentar

Microsoft hat einen neuen Insider Build von Windows 10 veröffentlicht (Fast Ring, Version 18317), wo die digitale Assistentin "Cortana" ...

Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 2 TagenHumor (lol)6 Kommentare

aber wo ist der Hammer? :-)

Heiß diskutierte Inhalte
Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft25 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server21 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1018 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...

Internet
Google-Suchergebnisse, Schnelleinblendung, woher kommt der Inhalt?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Ich bin der Systembetreuer einer kleinen Gemeinde in Süddeutschland. Wir betreiben auch eine Leihbücherei. Eine Kundin hat letzten ...