Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateiowner über for-schleife auslesen und in Text-Datei ausgeben

Frage Entwicklung Batch & Shell

Mitglied: Aeleen

Aeleen (Level 1) - Jetzt verbinden

09.07.2009, aktualisiert 10:21 Uhr, 9883 Aufrufe, 8 Kommentare

Hallo, ich beschäftige mich erst seit kurzem mit der Kommandozeile und habe nun noch eine Frage an der ich leider selbst nicht weiterkomme.

Ich benutze derzeit die Kommandozeile unter Windows XP und habe bisher den DIR-Befehl über folgende For-Schleife:

For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do @echo %~dpnxi;%~zi;%~ti;%~nxi; >> C:\Ausgabe.txt

ausgeben lassen.

Ich benötige eine Textdatei in der folgende Spalten vorkommen sollen, jeweils durch semikolon getrennt:

[PfadzurDatei\Dateiname;Dateigroesse;Datum&Uhrzeit;Dateiname.Dateiendung;DateiOwner]
Bisherige Ausgabe:
C:\ PfadzurDatei\Dateiname;32768;11.11.2008 11:56; Dateiname.doc;

Mir fehlt nun noch der Übergabeparameter für den DateiOwner. Ich hoffe es hat jemand eine Idee.

Dazu nur kurz: ich möchte das komplette Abteilungslaufwerk, in eine Textdatei auslesen um es in einem anderen System auszuwerten. Dazu brauche ich eben auch den Besitzer jeder Datei.

Hoffe sehr auf rasche Hilfe.

Vielen Dank im Voraus.
Mitglied: mexx
09.07.2009 um 11:13 Uhr
Es gibt zwei Gründen, weshalb Du Dein Vorhaben mit Powershell machen solltest.

1. Die Commandoshell ist ein Auslaufmodell und kann im Vergleich zu Powershell nichts! (Sorry an alle CMD-Liebhaber)
2. Mit Powershell ist Dein vorhaben auch mit einer Zeile umsetzbar samt allen Eigenschaften der Datei inkl. der Ausgabe als CSV Datei, welche für Deine Auswertung vielleicht wichtiger ist.

Wenn Du Powershell verwenden willst, helfe ich Dir gerne bei der Umsetzung Deines Vorhabens. Vielleicht sollten wir Deine angestrebte Auswertung mal näher beleuchten. Was willst Du auswerten? Wie willst Du auf das Ergebnis reagieren?

Lg mexx
Bitte warten ..
Mitglied: Aeleen
09.07.2009 um 12:34 Uhr
Zitat von mexx:
Es gibt zwei Gründen, weshalb Du Dein Vorhaben mit Powershell
machen solltest.

>>Ich weiß nicht ob ich die Powershell hier installieren darf.

Da ich sonst keine Resonanz auf meine Frage erhalten habe, würde ich es gerne mit der Powershell probieren.
Es scheint dann wirklich keine einfache Lösung mit der Kommandozeile zu geben.

1. Die Commandoshell ist ein Auslaufmodell und kann im Vergleich zu
Powershell nichts! (Sorry an alle CMD-Liebhaber)
2. Mit Powershell ist Dein vorhaben auch mit einer Zeile umsetzbar
samt allen Eigenschaften der Datei inkl. der Ausgabe als CSV Datei,
welche für Deine Auswertung vielleicht wichtiger ist.

Wenn Du Powershell verwenden willst, helfe ich Dir gerne bei der
Umsetzung Deines Vorhabens. Vielleicht sollten wir Deine angestrebte
Auswertung mal näher beleuchten. Was willst Du auswerten? Wie
willst Du auf das Ergebnis reagieren?

Also mit Auswertung wollte ich eigentlich die Textdatei in SAS importieren, um damit dann pro User den Speicherplatzverbrauch auszugen, alte Dateien identifizieren, allgemein die Struktur unseres Abteilungslaufwerks ansehen. Das alles vor dem Hintergrund einer späteren Bereinigung des Laufwerks.

Ich benötige dafür eben, den Pfad, die Datei bzw. Dateinamen incl. Dateierweiterung, Speicherplatz, Datum/Zeitstempel, und eben diesen noch fehlenden Dateiowner und alles Zeilenweise und jeweils durch Semikolon getrennt.

Vielen Dank für die schnelle Antwort.

Lg, Aeleen



Lg mexx
Bitte warten ..
Mitglied: 80220
09.07.2009 um 13:05 Uhr
Du kannst das Ergebnis aus der ersten for-Schleife an eine Subroutine übertragen mit call :process "%"

Im Dir-Befehl sind imo nur die Parameter /B und /S wirksam, denn die Anzeige des letzen Zugriffs beinhaltet üblicherweise lediglich das Datum und keine Zeitangabe.

In der Subroutine kannst du dann aus dem übergebenen Parameter %1 deine Variablen aufbauen und anschließend mit showacls aus den Ressource Kit Tools den
"ERSTELLER-BESITZER" ebenfalls mit einer for-Schleife ermitteln. Das Ergebnis schreibst du in eine .csv und brauchst keine Powershell zu installieren.
Bitte warten ..
Mitglied: Biber
09.07.2009 um 14:45 Uhr
Moin aeleen,

willkommen im Forum.

Falls Du doch einfach Deine CMD-Zeile um ein paar Zeichen erweitern willst, dann ersetze denn Teil nach dem "DO..." so:

>For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do ...
--> jetzt dahinter eine "DIR /Q" (DIR mit OWNER-Anzeige)

01.
 For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do... 
02.
 @For /f "tokens=4" %a in ('dir /q "%i"^|find /i "%~nxi"') do @echo %~dpni;%~zi;%~ti;%~nxi;%a; 
Dann hast Du es wie gewünscht.

Ich nutze also deinen bisherigen Befehl, der ja ALLE Dateien mit der Suchmaske "*.*" liefert
und führe danach auf die EINZELNE Datei das DIR /Q nach derselben Mimik (auch in einer FOR/F-Anweisung ausgewertet) aus.

Grüße
Biber
Bitte warten ..
Mitglied: 80220
09.07.2009 um 15:09 Uhr
@Biber
den /Q Parameter kannte ich noch nicht, den habe ich glatt übersehen.

Aber meinen Hinweis zum /T-Parameter hast du leider überlesen, der funktioniert nämlich nicht im Zusammenhang mit /B
Bitte warten ..
Mitglied: Aeleen
09.07.2009 um 16:49 Uhr
Herzlichen Dank - habe es gerade ausprobiert und es funktioniert. Danke für die unkomplizierte Lösung.

Lg, Aeleen
Bitte warten ..
Mitglied: Biber
09.07.2009 um 17:10 Uhr
Moin dumdideldum & Aeleen,


@80220
Ja, stimmt, Deine "DIR /T"-parameter-Anmerkung habe ich überlesen. Sorry.

@Aeleen
Aber, falls Du wirklich das "DIr /t:a"/Letzte Zugriffsdatum brauchst... ginge auch mit den beiden FOR-Anweisungen

  • mit der ersten "FOR/F in DIR"-Anweisung wie oben stehend ein "DIR /B /S" über alles und über alle Ebenen
  • mit der zweiten wie oben stehende ein "DIR /Q" auf jede einzelne Datei + zusätzlich dort den /T:a-Schalter einbauen
  • und von dieser zweiten Ausgabe nicht nur das 4. Token (OWNER), sondern auch Token 1 & 2 (Datum/Uhrzeit) verwerten.

Die zweite FOR /F-Anweisung sollte dann so aussehen:
.... @For /f "tokens=1-4" %a in ('dir /q "%i"^|find /i "%~nxi"') DO....
... wobei dann sein wird:
%a = Datum letzter Zugriff
%b = Zeit letzter Zugriff
%d = Owner der Datei
^^ Setzt Du noch einen grünen Haken dran bitte und schreibst nie wieder "Vielen Dank im voraus" hier?

Grüße
Biber
Bitte warten ..
Mitglied: Aeleen
09.07.2009 um 17:15 Uhr
Zitat von Biber:
Moin dumdideldum & Aeleen,


@80220
Ja, stimmt, Deine "DIR /T"-parameter-Anmerkung habe ich
überlesen. Sorry.

@Aeleen
Aber, falls Du wirklich das "DIr /t:a"/Letzte Zugriffsdatum
brauchst... ginge auch mit den beiden FOR-Anweisungen

  • mit der ersten "FOR/F in DIR"-Anweisung wie oben stehend
ein "DIR /B /S" über alles und über alle Ebenen
  • mit der zweiten wie oben stehende ein "DIR /Q" auf jede
einzelne Datei + zusätzlich dort den /T:a-Schalter einbauen
  • und von dieser zweiten Ausgabe nicht nur das 4. Token (OWNER),
sondern auch Token 1 & 2 (Datum/Uhrzeit) verwerten.

Die zweite FOR /F-Anweisung sollte dann so aussehen:
> .... @For /f "tokens=1-4" %a in ('dir /q
"%i"^|find /i "%~nxi"') DO....
... wobei dann sein wird:
%a = Datum letzter Zugriff
%b = Zeit letzter Zugriff
%d = Owner der Datei
^^ Setzt Du noch einen grünen Haken dran bitte und schreibst nie
wieder "Vielen Dank im voraus" hier?

>>in Ordnung Biber, ist bestimmt, weil ich auf der Arbeit immer so förmlich Briefe schreibe.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Text-Datei auslesen und Inhalt als Parameter übergeben (1)

Frage von aubm2013 zum Thema Batch & Shell ...

Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife kaputt? (5)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...