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

Frage Entwicklung

GELÖST

Besitzer von Ordnern UND Dateien mit vbs in excel ausgeben

Mitglied: Pretznbaer

Pretznbaer (Level 1) - Jetzt verbinden

20.11.2012 um 16:17 Uhr, 3410 Aufrufe, 8 Kommentare

Hallo!
Ich müsste eine Script erstellen, dass alle Ordner und dessen Inhalte in einem Verzeichnis + deren Besitzerinformationen in ein excel File ausgibt. Habe hierzu schon ein paar (ältere) Threats gefunden, die mich fast auf die richtige Lösung gebracht haben (Besitzer von Ordnern mit VB-Script auslesen).

Dies ist der Code, den ich aus dem oben genannten Threat kopiert habe:

ordner = "C:\Downloads"
Liste = "C:\Liste.csv"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f1 = fs.GetFolder(ordner)
If fs.FileExists(Liste) Then fs.DeleteFile(Liste)
Set WshShell = CreateObject("WScript.Shell")
For Each unterordner In f1.Subfolders
listunter = listunter & unterordner & vbcrlf
CMD = "cmd /c for /f ""skip=7 tokens=4*"" %a in ('dir """ & unterordner & """/q^|findstr /v ""Datei(en) Verzeichnis(se)""') do @echo %a;%b"
besitzer = WshShell.Exec(CMD).StdOut.ReadAll
listunter = listunter & besitzer & vbcrlf
Next
fs.CreateTextFile(Liste).Write listunter


Weiters wäre es von Vorteil, wenn die Dateibezeichnung des ausgegebene Files immer als Präfix das jeweilige Erstellungsdatum hätte. Beispiel: "2012 11 20 Liste.csv"
Leider habe ich keine Ahnung, wie ich dies in den Code oben einbauen sollte.


Bin leider nicht sooo vertraut mit der Materie und komme einfach nicht auf die richtige Lösung -.-
Vielleicht kann mir hierzu jemand helfen?

Lg
Pretznbär
Mitglied: bastla
20.11.2012, aktualisiert um 18:11 Uhr
Hallo Pretznbaer und willkommen im Forum!

Wenn es nur um den Dateinamen gehen sollte:
Liste = "C:\" & Right(Date, 4) & " " & Mid(Date, 4, 2) & " " & Left(Date, 2) & " Liste.csv"
- oder hattest Du noch eine andere Frage?

Grüße
bastla

P.S.: VBS braucht's dafür aber eigentlich gar nicht - ließe sich auch per Batch erledigen (ungetestet):
01.
@echo off & setlocal 
02.
set "Ordner=C:\Downloads" 
03.
set "Liste=C:\%date:~-4% %date:~-7,2% %date:~-10,2% Liste.csv" 
04.
del "%Liste%" 2>nul 
05.
 
06.
for /d %%i in ("%Ordner%\*") do ( 
07.
    echo %%i 
08.
    for /f "skip=7 tokens=4*" %%a in ('dir "%%i" /q^|findstr /v "Datei(en) Verzeichnis(se)"') do echo %%a;%%b 
09.
)>>"%Liste%"
Bitte warten ..
Mitglied: Pretznbaer
21.11.2012 um 09:30 Uhr
Hallo Bastla!

Deine Lösung war fast perfekt --> GENIAL!

Habe lediglich folgenden Code

Zitat von bastla:
del "%Liste%" 2>nul

for /d %%i in ("%Ordner%\*") do (
echo %%i
for /f "skip=7 tokens=4*" %%a in ('dir "%%i" /q^|findstr /v "Datei(en) Verzeichnis(se)"') do echo %%a;%%b
)>>"%Liste%"
</code>

durch diesen:

del "%Liste%" 2>nul
for /r "%Ordner%" %%i in (.) do for /f "skip=7 tokens=4*" %%a in ('dir "%%i" /ad /q^|findstr /v "Datei(en) Verzeichnis(se)"') do echo %%~fi\%%b;%%a>>"%Liste%"

ersetzt und jetzt wird mir der komplette Inhalt des Ordners C:\Download ausgegeben. (Den Code habe ich übrigens auch von dir aus dem im Vorwort genannten Threat übernommen) ;)

Nochmals vielen Dank für die rasche Hilfe!!

Lg
Pretznbär
Bitte warten ..
Mitglied: bastla
21.11.2012 um 12:21 Uhr
Hallo Pretznbaer!

Schön, dass es passt ...

Der Batchansatz hier war von der VBS-Version (wo es ja keine Rekursion gab) abgeleitet.

Grüße
bastla
Bitte warten ..
Mitglied: Pretznbaer
23.11.2012, aktualisiert um 13:53 Uhr
Hallo!

Habe meine Frage leider voreilig als gelöst gekennzeichnet. Gibts hier eine Möglichkeit dies Rückgängig zu machen? Wenn ja bitte um kurze Info^^

Mir ist nämlich folgendes aufgefallen:

mit dem Script sollen alle Ordner und Dateien + deren Besitzer eines Verzeichnisses ausgegeben werden. Bis jetzt werden mir jedoch immer nur die Ordner und deren Besitzer ausgegen.
(Leider zu später gesehen)

Außerdem bringe ich das Script auf unseren Win server 2003 (englische Version falls das einen Unterschied macht?!) nicht richtig zum Laufen. Anstatt der Besitzer wird mir hier nur "..." oder "Bytes" ausgegeben.
An den Rechten kann es normalerweise nicht liegen, da ich quasi Adminrechte auf dem Server besitze.

Leider bin ich erst jetzt drauf gekommen -.- und hoffe das mir vl doch noch jemand nen Tipp geben kann?

Hier der Code den ich verwende:


1. @echo off & setlocal
2. set "Ordner=C:\Downloads"
3. set "Liste=C:\%date:~-4% %date:~-7,2% %date:~-10,2% Ordnerliste.csv"
4. del "%Liste%" 2>nul
5. for /r "%Ordner%" %%i in (.) do for /f "skip=7 tokens=4*" %%a in ('dir "%%
i" /ad /q^|findstr /v "Datei(en) Verzeichnis(se)"') do echo %%~fi\%%b;%%a>>"%
Liste%"


P.S.: Sorry für die grottenschlechte Formatierung...


Lg
Pretznbaer
Bitte warten ..
Mitglied: bastla
23.11.2012 um 15:23 Uhr
Hallo Pretznbaer!

Da es ja auch dem Titel des Threads besser entspricht , doch noch ein VBS-Ansatz:
01.
Startordner = "C:\Downloads" 
02.
Detail = "Owner" 'da engl. OS; dt: "Besitzer" 
03.
'Formatiertes Datum für Dateinamen unabhängig von Sprache und Ländereinstellung ermitteln 
04.
CSV = "C:\" & Year(Date) & " " & Right("0" & Month(Date), 2) & " " & Right("0" & Day(Date), 2) & " Ordnerliste.csv" 
05.
 
06.
Set objShell = CreateObject ("Shell.Application") 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
'Nr der gesuchten Eigenschaft ("Owner") suchen, da abhängig vom OS 
10.
Set objFolder = objShell.Namespace(Startordner) 
11.
DNr = -999 
12.
For i = 0 to 300 
13.
    If objFolder.GetDetailsOf (, i) = Detail Then 
14.
        DNr = i 
15.
        Exit For 
16.
    End If 
17.
Next 
18.
If DNr = -999 Then 
19.
    WScript.Echo "Die Eigenschaft """ & Detail & """ konnte nicht gefunden werden!" 
20.
    WScript.Quit 
21.
End If 
22.
 
23.
Set objCSV = fso.CreateTextFile(CSV) 'Ausgabedatei erstellen 
24.
ProcessFolder fso.GetFolder(Startordner) 'Rekursion im Startordner beginnen 
25.
 
26.
Sub ProcessFolder(objFld) 
27.
strFldPath = objFld.Path 'Pfad des untersuchten Ordners zwischenspeichern - wird mehrmals benötigt 
28.
Set objFolder = objShell.Namespace(strFldPath) 'Namespace-Objekt des Ordners erzeugen 
29.
For Each objFile In objFld.Files 'alle Dateien des Ordners durchgehen 
30.
    strFileName = objFile.Name 'Dateinamen zwischenspeichern 
31.
    'Dateipfad und gesuchte Info in Zieldatei ausgeben 
32.
    objCSV.WriteLine strFldPath & "\" & strFileName & ";" & objFolder.GetDetailsOf(objFolder.ParseName(strFileName), DNr) 
33.
Next 
34.
For Each objSubFld In objFld.SubFolders 'alle Unterordner des Ordners durchgehen 
35.
    strSubFldName = objSubFld.Name 'Orndernamen zwischenspeichern 
36.
    'Ordnerpfad und gesuchte Info in Zieldatei ausgeben 
37.
    objCSV.WriteLine strFldPath & "\" & strSubFldName & ";" & objFolder.GetDetailsOf(objFolder.ParseName(strSubFldName), DNr) 
38.
    ProcessFolder objSubFld 'Bearbeitung des Unterordners aufrufen (Rekursion) 
39.
Next 
40.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Pretznbaer
26.11.2012 um 14:00 Uhr
Hallo bastla!

Vorab nochmal vielen Dank für deine Bemühungen (ist nicht immer einfach einen Dummy wie ich einer bin, etwas zu erklären) ;)

Das Script funktioniert fast wie es soll. Bei den Dateien und den meisten Unterordnern werden die Besitzerinformationen richtig ausgegeben. Bei den "Überordner" jedoch wird mir als Besitzer immer "Owner" anstatt des tatsächlichen Besitzers ausgegeben.

Beispiel:

D:\Downloads --> Besitzer wird hier immer mit "Owner" ausgegeben wobei ich der eigentliche Besitzer bin.
D:\Downloads\Ordner_A --> Besitzer: Ich (ist also korrekt)
D:\Downloads\Ordner_A\Beispiel.pdf --> Besitzer: Ich (korrekt)

Hab schon einiges herum probiert aber bekomme immer wieder das gleiche Ergebnis.. Es macht keinen Unterschied ob ich das Script Lokal oder auf dem Server ausführe.

Hast du vl noch nen Tipp? :P

Lg
Pretznbaer
Bitte warten ..
Mitglied: bastla
26.11.2012 um 16:21 Uhr
Hallo Pretznbaer!

Ich konnte das zwar bei einigen Ordnern nachvollziehen, habe aber derzeit keine Erklärung dafür ...

Grüße
bastla
Bitte warten ..
Mitglied: Pretznbaer
26.11.2012 um 16:38 Uhr
Zitat von bastla:
Hallo Pretznbaer!

Ich konnte das zwar bei einigen Ordnern nachvollziehen, habe aber derzeit keine Erklärung dafür ...

Grüße
bastla

Kein Problem. Ich werde etwas herum probieren und vl komme ich ja mit viel Glück auf das richtige Ergebnis! Und gebe dann natürlich Bescheid
Solltest du auch dahinter kommen, würde ich mich über eine kurze Info freuen!

Lg und vielen Dank!
Pretznbaer
Bitte warten ..
Ähnliche Inhalte
Windows Server
Netzlaufwerk - Ordner Besitzer werden nicht angezeigt
gelöst Frage von LukihoferWindows Server

Hallo Zusammen ! Wir haben ein Netzlaufwerk das über DFS verwaltet wird und haben bei den jeweiligen Ordner einen ...

Batch & Shell
VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen)
gelöst Frage von Luuke257Batch & Shell5 Kommentare

Hallo zusammen! Vorweg, ich bin absoluter neuling im Scripten, ich habe mir das alles nur so zusammengebastelt und versuche ...

Microsoft Office
Excel nächstligenden Wert ausgeben
gelöst Frage von Florian86Microsoft Office5 Kommentare

Hallo, ich habe folgende Tabelle Spalte A Spalte B Spalte C Spalte D Spalte E Spalte F Wert1 Bemerkung ...

Microsoft
Im ordner nach dateien aus excel liste suchen
Frage von tiolocoMicrosoft2 Kommentare

hallo, ich habe ein problem, das bei mir des öfteren vorkommt: sagen wir mal, ich hab ein ordner mit ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...