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

Besitzer von Ordnern UND Dateien mit vbs in excel ausgeben

Frage Entwicklung

Mitglied: Pretznbaer

Pretznbaer (Level 1) - Jetzt verbinden

20.11.2012 um 16:17 Uhr, 3256 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

VB for Applications
gelöst Windows Ordnerstruktur, Pfad und Dateiname in Excel ausgeben (2)

Frage von zlep01 zum Thema VB for Applications ...

Microsoft Office
gelöst Txt Dateien in Excel importieren (9)

Frage von Serbitar zum Thema Microsoft Office ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...