Ordner Treeview?

skyline930

Welt-Boss
Registriert
07.04.2009
Beiträge
1.326
Reaktionspunkte
31
Kommentare
142
Buffs erhalten
7
Hi,

ich hab nur eine kurze Frage:
Kennt wer ein Programm, mit dem man sich eine Ordnerstruktur übersichtlich in einer Tree-Struktur anzeigen lassen kann? Ich hab im Moment rund 30000 Dateien in 12500 Ordnern, und brauche eine Übersicht.
Ideal wäre wenn das Programm die 3 folgenden Ausgabetypen könnte, und ein Export in eine Textdatei.

1. benötigte Ausgabe (Nur Ordner sollen angezeigt werden)

Code:
root
 |-ordner1
 	|- ordner2
 	|- ordner3
...

2. benötigte Ausgabe (Zusätzlich zu dem Ordnernamen sollen die Erweiterungen der darin enthaltenen dateien aufgelistet sein)

Code:
root
 |-ordner1 (.java, .class, .bat)
 	|- ordner2 (.java)
 	|- ordner3 (...)
...

3. benötigte Ausgabe (Alle Dateien und Ordner sollen angezeigt werden)
Code:
root
 |-datei.java
 |-datei2.bat
 |-ordner1
 	|-datei3.exe
 	|- ordner2
 	|- ordner3
...

Schonmal danke im voraus.
 
Zuletzt bearbeitet von einem Moderator:
Hi,

ist jetzt zwar kein eigenständiges Programm aber der Tree befehl von dos deckt deine Frage zum größten Teil ab. Viell. hilft dir das ja weiter.

Einfach in der cmd folgendes eingeben:

tree C:\ /a >textdatei.txt
Das listet dir alle Ordner in C mit den jeweiligen Unterordner auf, und schreibt es in eine textdatei. Wie unter Punkt 1 von dir gewünscht.

tree C:\ /f /a >textdatei.txt
Das listet alle Ordner und Unterordner mit den jeweilen Files + extensions auf, und schreibt es in eine textdatei. Wie unter Punkt 3 von dir gewünscht.

Punkt 2 ist da schon etwas schwierger das kann meines Wissen nach der tree befehl nicht.

Falls du Linux verwendest wäre das Gegenstück

ls oder find und dann wieder in nen txt umleiten.

Hier noch ein Link zum Tree befehl : http://www.computerhope.com/treehlp.htm#03
 
Bau dir selbst eines. Hier mal ne kleine Anregung mit C# umgesetzt. Links oben wählst du aus, ob du jeweils die Files im gewählten Ordner haben willst oder nur die darin vorkommenden
Extensions. Das ganze wird dann rechts in Anhängigkeit vom gewählten Ordner links in der Baumstruktur angezeigt.

treeviewauvi.png


Das ganze ist ohne Rechteverwaltung recht überschaubar.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FileViewer
{
	public partial class Form1 : Form
	{
 	private TreeNode m_CurrentSelectedNode { get; set; }
 	
 	public Form1()
 	{
 	InitializeComponent();
 	GetStartUpConf();
 	radioButton2.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
 	radioButton3.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
 	}
 	private void GetStartUpConf()
 	{
 	radioButton2.Checked = true;
 	//alle laufwerke auslesen
 	string[] sArrLogicalDrives = Directory.GetLogicalDrives();
 	//über die laufwerke loopen und jedes einzeln in den treeview stopfen
 	foreach (string driveWalk in sArrLogicalDrives)
 	{
 	TreeNode node = treeView1.Nodes.Add(driveWalk);
 	//für jedes laufwerk holen wir uns die darunter liegende verzeichnisse
 	GetSubDir(node);
 	}
 	}
 	private void GetSubDir(TreeNode node)
 	{
 	//wir erzeugen ein DirectoryInfo-Objekt und übergeben im Konstruktor den Pfad.
 	DirectoryInfo dirInf = new DirectoryInfo(node.FullPath);

 	//Jetzt lassen wir uns alle Unterordner des übergebenen Verzeichnisses geben und speichern es in einem array.
 	//Falls Windows uns den Zugriff auf ein Verzeichnis verweigern sollte, was bei Vista und Win7 vorkommt, wird
 	//eine Exception geworfen. Diese fangen wir ab, damit uns das Programm nicht abschmiert. 
 	try
 	{
 	DirectoryInfo[] arrDirInf = dirInf.GetDirectories();

 	//Jetzt loopen wir über alle Verzeichnisse und stopfen sie in den Treeview
 	foreach (DirectoryInfo dirWalk in arrDirInf)
 	{
 	TreeNode myNode = node.Nodes.Add(dirWalk.Name);
 	}
 	}
 	catch
 	{ 
 	MessageBox.Show("Jetzt schaugst bled!");
 	}
 	}
 	/// <summary>
 	/// Liest alle Files im übergebenen Pfad aus und schreib entweder den Filenamen, oder nur die Extension in die ListBox.
 	/// </summary>
 	/// <param name="node"></param>
 	private void GetFiles(TreeNode node, bool bShowFiles)
 	{
 	listBox1.Items.Clear();

 	try
 	{
 	DirectoryInfo dirInf = new DirectoryInfo(node.FullPath);
 	FileInfo[] arrFileInf = dirInf.GetFiles();

 	foreach (FileInfo fileWalk in arrFileInf)
 	{
 	if (bShowFiles)
 	listBox1.Items.Add(fileWalk.Name);
 	else
 	{
 	if (!listBox1.Items.Contains(fileWalk.Extension))
 	listBox1.Items.Add(fileWalk.Extension);
 	}
 	}
 	}
 	catch
 	{ 
 	MessageBox.Show("Jetzt schaugst bled!");
 	}
 	}
 	/// <summary>
 	/// Ein event, dass gefeuert wird, sobald du einen Knoten über das + Zeichen aufklappen willst. Für jeden Unterknoten, des von dir angeklicken Knotens,
 	/// holen wir uns jetzt wieder die Unterverzeichnisse.
 	/// </summary>
 	/// <param name="sender"></param>
 	/// <param name="e"></param>
 	private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
 	{
 	//Alle Unterknoten des von dir angeklickten Knotens holen
 	TreeNodeCollection nodeCol = e.Node.Nodes;
 	
 	//Und für jeden dieser Unterknoten wiederum die darunterliegenden Ordner holen
 	foreach (TreeNode nodeWalk in nodeCol)
 	{
 	//prüfen, ob wir die Unterverzeichnisse nicht schon geadded haben
 	if (nodeWalk.Nodes.Count < 1)
 	{
 	GetSubDir(nodeWalk);
 	}
 	}
 	}
 	/// <summary>
 	/// Für das selektierte Item die Dateien holen
 	/// </summary>
 	/// <param name="sender"></param>
 	/// <param name="e"></param>
 	private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
 	{
 	m_CurrentSelectedNode = e.Node;
 	GetFiles(e.Node, radioButton2.Checked);
 	}
 	/// <summary>
 	/// Checked status der Radiobuttons hat sich geändert. Wir refreshen die listbox. 
 	/// </summary>
 	/// <param name="sender"></param>
 	/// <param name="e"></param>
 	private void radioButton_CheckedChanged(object sender, EventArgs e)
 	{
 	GetFiles(m_CurrentSelectedNode, radioButton2.Checked);
 	}
	}
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück