Wie würden Sie bei einem gegebenen Dateibaum - einem Verzeichnis mit Verzeichnissen usw. - ein Skript schreiben, um ein Diagramm des Dateibaums als Grafikdatei zu erstellen, die ich in ein Textverarbeitungsdokument einbetten kann? Ich bevorzuge Vektordateien (SVG, EPS, EMF ...). Das Tool muss unter Windows ausgeführt werden, vorzugsweise jedoch plattformübergreifend. Das Werkzeug kann kommerziell, aber vorzugsweise kostenlos sein.
Update 2012-02-20. Die Frage bezog sich auf ein Dokumentationsunterprojekt. Ich musste erklären, wo sich Dateien (insbesondere Ressourcen und Konfigurationsdateien) befinden. Am Ende habe ich den Befehl dos tree verwendet. Ich habe sowohl das Ergebnis auf dem Bildschirm (für kurze Ordner) als auch für längere Ordner auf eine Textdatei umgeleitet, die ich dann bearbeitet habe. Wenn zum Beispiel ein Unterordner 20 ähnlich typisierte Dateien enthielt, die für den Punkt, den ich machte, einzeln nicht wichtig waren, ließ ich nur zwei übrig und ersetzte den Rest durch eine ... Zeile. Ich druckte die Datei dann erneut aus, um sie zu konsolidieren, und der Bildschirm griff danach. Vor dem Aufnehmen des Bildschirms musste ich die Vordergrundfarbe in Schwarz und die Hintergrundfarbe in Weiß ändern, um besser auszusehen und Tinte in einem Dokument zu sparen, falls dieses gedruckt werden sollte.
Es ist sehr überraschend, dass es kein besseres Werkzeug dafür gibt. Wenn ich Zeit hätte, würde ich eine Visio-Erweiterung schreiben oder eine Befehlszeile sein, die SVG erzeugt. SVG ist HTML5-minderwertig und würde sogar die schmerzlose Aufnahme in die Online-Dokumentation ermöglichen.
Update 2017-10-17. Es tut mir leid, dass diese Frage entfernt wurde, da sie nicht zu SO gehört. Also habe ich es umformuliert. Ich brauche ein Skript - kein WYSIWYG-Tool. Jede Skriptsprache oder Bibliothek ist also in Ordnung. Es ist also eine Frage zum Schreiben von Code, und ich glaube, sie gehört zu SO.
quelle
Antworten:
Das Kopieren und Einfügen aus dem MS-DOS-
tree
Befehl funktioniert möglicherweise auch für Sie. Beispiele:Baum
Baum / F.
Baum / A.
Baum / F / A.
Syntax [ Quelle ]
tree
[drive:
] [path
] [/F
] [/A
]quelle
tree > file_structure.txt
Ich weiß, dass dies auf Unix-Systemen funktioniert. Ich weiß nicht, ob es auch unter Windows funktioniert.Graphviz - von der Webseite:
Es ist das einfachste und produktivste Tool, das ich gefunden habe, um eine Vielzahl von Box-and-Line-Diagrammen zu erstellen. Ich habe und benutze Visio und OmniGraffle, aber es besteht immer die Versuchung, "nur noch eine Anpassung" vorzunehmen.
Es ist auch recht einfach, Code zu schreiben, um das von Graphiz verwendete "Punktedatei" -Format zu erzeugen, sodass die automatisierte Diagrammproduktion ebenfalls in Reichweite ist.
quelle
Wie versprochen, hier ist meine Kairoer Version. Ich habe es mit Lua geschrieben und lfs verwendet, um die Verzeichnisse zu durchsuchen. Ich liebe diese kleinen Herausforderungen, da sie es mir ermöglichen, APIs zu erkunden, die ich schon seit einiger Zeit ausgraben wollte ...
lfs und LuaCairo sind beide plattformübergreifend, daher sollte es auf anderen Systemen funktionieren (getestet auf Französisch WinXP Pro SP3).
Ich habe eine erste Version erstellt, in der Dateinamen gezeichnet wurden, als ich über den Baum ging. Vorteil: kein Speicheraufwand. Unannehmlichkeiten: Ich muss die Bildgröße im Voraus angeben, damit die Einträge wahrscheinlich abgeschnitten werden.
Also habe ich diese Version erstellt, indem ich zuerst den Verzeichnisbaum durchgesehen und in einer Lua-Tabelle gespeichert habe. Dann müssen Sie die Anzahl der Dateien kennen, die Leinwand (zumindest vertikal) passend erstellen und die Namen zeichnen.
Sie können problemlos zwischen PNG-Rendering und SVG-Rendering wechseln. Problem mit letzterem: Kairo generiert es auf niedriger Ebene und zeichnet die Buchstaben, anstatt die Textfunktion von SVG zu verwenden. Zumindest garantiert es eine genaue Wiedergabe auch auf Systemen ohne Schriftart. Aber die Dateien sind größer ... Kein wirkliches Problem, wenn Sie es danach komprimieren, um eine .svgz-Datei zu haben.
Oder es sollte nicht zu schwierig sein, die SVG direkt zu generieren. Ich habe Lua in der Vergangenheit verwendet, um SVG zu generieren.
Natürlich können Sie die Stile ändern. Ich habe die Verbindungslinien nicht gezeichnet, ich habe es nicht als notwendig angesehen. Ich könnte sie optional später hinzufügen.
quelle
Warum können Sie nicht einfach eine Dateistruktur im Windows-Dateisystem erstellen und diese mit Ihren gewünschten Namen füllen? Verwenden Sie dann einen Screen Grabber wie HyperSnap (oder das allgegenwärtige Alt-PrtScr), um einen Abschnitt des Explorer-Fensters zu erfassen.
Ich habe dies getan, als ich eine Internetanwendung mit zusammenklappbaren Abschnitten "vorführte". Ich musste nur Dateien erstellen, die meinen gewünschten Einträgen entsprachen.
HyperSnap gibt zumindest JPGs (wahrscheinlich andere, aber ich habe mich nie darum gekümmert, dies zu untersuchen).
Sie können auch die Symbole +/- aus dem Explorer auf dem Bildschirm erfassen und sie in MS Word Draw selbst verwenden, um Ihr Bild zu erstellen, aber ich habe MS Word Draw noch nie dazu gebracht, sich richtig zu verhalten.
quelle
Der Rat für die Verwendung von Graphviz ist gut: Sie können die Punktdatei generieren und es wird die harte Arbeit des Messens von Zeichenfolgen, des Layouts usw. erledigen. Außerdem können die Diagramme in vielen Formaten ausgegeben werden, einschließlich Vektorformaten.
Ich habe in einer Mailingliste ein Perl-Programm gefunden, das genau das tut, aber ich kann es einfach nicht zurückfinden! Ich habe die Beispiel-Punktdatei kopiert und studiert, da ich nicht viel über diese deklarative Syntax weiß und etwas mehr lernen wollte.
Problem: Mit dem neuesten Graphviz habe ich Fehler (oder besser gesagt Warnungen, wenn das endgültige Diagramm erstellt wird), sowohl im Originaldiagramm als auch in dem von mir geschriebenen (von Hand). Einige Suchanfragen haben gezeigt, dass dieser Fehler in alten Versionen gefunden wurde und in neueren Versionen verschwunden ist. Sieht aus wie es zurück ist.
Ich gebe die Datei immer noch, vielleicht kann sie ein Ausgangspunkt für jemanden sein, oder vielleicht reicht sie für Ihre Bedürfnisse aus (natürlich müssen Sie sie noch generieren).
Ich werde eine andere Richtung ausprobieren, indem ich Kairo verwende, das auch eine Reihe von Formaten exportieren kann. Es ist mehr Arbeit (Berechnen von Positionen / Offsets), aber die Struktur ist einfach und sollte nicht zu schwierig sein.
quelle