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

Script gesucht zum Auflösen und Wiederherstellen von Ordner-Hierachien

Frage Entwicklung Batch & Shell

Mitglied: phatair

phatair (Level 1) - Jetzt verbinden

14.06.2007, aktualisiert 16.06.2007, 4508 Aufrufe, 5 Kommentare

Hallo zusammen,

ich suche ein script bzw. tool welches aus meheren Unterordnern die Dateien auf eine "Ebene" kopiert zum leichteren bearbeiten. Nach dem bearbeiten sollte es möglich sein die Daten wieder in die vorhandene Ordnerstruktur zurück zu kopieren.

Eine gute Beschreibung der Funktion ist dies:


Die Funktion "extrahiert" Dateien in Unterordnern bis zu einer definierbaren Ebene und leitet diese an einen nächsten Ordner flach für die Verarbeitung weiter. Diese Option eignet sich insbesondere für einen Workflow, bei dem in einem Überwachten Ordner mehrere Unterordner z.B. für bestimmte Mitarbeiter oder Kunden angelegt werden. Die Daten sollen aber "flach" durch den nächsten Arbeitsschritt laufen. Über die Funktion kann man die Daten nach der Bearbeitung wieder in die ursprüngliche Struktur ablegen lassen.

Leider ist das Programm wo die Beschreibung dazu gehört viel zu teuer und ich wäre euch super dankbar wenn ihr mir helfen könntet ein vergleichbares script oder tool zu finden.

Danke un dGruß
Mitglied: bastla
15.06.2007 um 21:13 Uhr
Hallo phatair!

Eine 1:1-Umsetzung der gewünschten Funktionalität habe ich zwar nicht anzubieten, aber was das "flattening" anlangt, könnte vielleicht der folgende VB-Script-Entwurf eine Alternative darstellen:
01.
'FlattenToWorkDir.vbs 
02.
Const Arbeit = "Arbeit" 
03.
 
04.
Set WshShell = WScript.CreateObject("WScript.Shell") 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
If WScript.Arguments.Count > 0 Then 
07.
    If fso.FolderExists(WScript.Arguments(0)) Then BasisPfad = WScript.Arguments(0) 
08.
End If 
09.
If BasisPfad = "" Then 
10.
    Set Verzeichnis = CreateObject("Shell.Application") _ 
11.
        .BrowseForFolder(0, "Basisordner wählen", 16, 17) 
12.
    If TypeName(Verzeichnis) = "Nothing" Then WScript.Quit(1) 
13.
    Set Basis = Verzeichnis.Self 
14.
    BasisPfad = Basis.Path 
15.
End If 
16.
BasisPfad = fso.GetFolder(BasisPfad).Path 
17.
If Right(BasisPfad, 1) = "\" Then BasisPfad = Left(BasisPfad, Len(BasisPfad) - 1) 
18.
ArbeitsPfad = BasisPfad & "\" & Arbeit 
19.
If fso.FolderExists(ArbeitsPfad) Then 
20.
	On Error Resume Next 
21.
	fso.DeleteFile(ArbeitsPfad & "\*.lnk") 
22.
	On Error Goto 0 
23.
Else 
24.
	fso.CreateFolder(ArbeitsPfad) 
25.
End If 
26.
 
27.
DoSubFolders(fso.GetFolder(BasisPfad)) 
28.
WScript.Echo "Verknüpfungen in Ordner " & Arbeitspfad & " erstellt." 
29.
WScript.Quit 
30.
 
31.
Sub DoSubFolders(Ordner) 
32.
For Each Unterordner In Ordner.Subfolders 
33.
	If LCase(Unterordner.Path) <> LCase(ArbeitsPfad) Then 
34.
		RelPath = Replace(Unterordner.Path, BasisPfad, "") 
35.
		If Left(RelPath, 1) = "\" Then RelPath = Mid(RelPath, 2) 
36.
		RelName = Replace(RelPath, "\", "-") 
37.
		For Each Datei In Unterordner.Files 
38.
			Set objShellLink = WshShell.CreateShortcut(ArbeitsPfad & "\" & _ 
39.
      			 RelName & "_" & Datei.Name & ".lnk") 
40.
			objShellLink.TargetPath = Datei.Path 
41.
			objShellLink.Save 
42.
		Next 
43.
		DoSubFolders(Unterordner) 
44.
	End If 
45.
Next 
46.
End Sub
Funktion:
Erstelle vom angegebenen Basis-Ordner ausgehend einen neuen Ordner "Arbeit" (Name definiert in "Const"-Zeile) und in diesem Arbeitsordner Links zu allen Dateien der Ordner unterhalb des Basisordners (noch ohne Einschränkung der Ordnertiefe).

Der Basisordner kann beim Aufruf des Scripts als Argument (um zB eine Verknüpfung für oft benötigte Basisordner zu erstellen) übergeben werden. Weiters ist es möglich, den Basisordner per Drag and Drop auf das Script zu ziehen. Wird das Script einfach per Doppelklick gestartet, kann der Basisordner in einem Dialog gewählt werden.

Ist der Arbeitsordner noch nicht vorhanden, wird dieser erstellt, anderenfalls werden alle darin enthaltenen Links gelöscht und neu eingefügt.

Den Links wird zur besseren Übersicht (und um Namenskollisionen vorzubeugen) der relative Ordnerpfad vorangestellt.

Im Unterschied zu der von Dir beschriebenen Funktionalität werden keine Kopien von Dateien erstellt, sondern es können immer die Originaldateien bearbeitet werden. Dadurch entfällt auch das abschließende "Zurückkopieren"/Synchronisieren.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
15.06.2007 um 22:49 Uhr
Moin Bastla,

mit dieser Strategie habe ich auch geliebäugelt (natürlich hätte ich das mit simplem Batch gemacht statt mit VBSkript).
Einziger nennenswerter Unterschied: Ich hätte mich für das "@" oder das "§"-Zeichen als Ersatz für den Backslash entschieden. Wegen der möglichen Probleme/Mehrdeutigkeiten beim Rückübersetzen.

Aber dann dachte ich - ähnlich wie Du es ja auch berücksichtigst - dass es nicht sinnvoll sein darf, auf/mit einer Kopie zu arbeiten. ("Es kann nur einen geben.., wie es so schön heißt.).

Meine Strategie wäre dann letzten Endes (im Batch), diese "neuen" Dateinamen, also z.B. "§Test§Sub§Ordner45§Datei.xyz" als Alias-Name für "\Test\Sub\Ordner45\Datei.xyz"
nur mit LinkD.exe (oder Konsorten) als verlinkte Datei in einem neuen Ordner bereitzustellen.

Also ein "echter" Dateilink statt eine Verknüpfung.
Somit würde definitiv immer auf dem Original gearbeitet werden.

Genau genommen habe ich mich nur zurückgehalten, weil ich Dir bei den exzellenten Erklärungen gerne den Vortritt lasse.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
15.06.2007 um 23:17 Uhr
@Biber
... den Vortritt lasse.
Woher wusstest Du, dass ich an dem Thema nicht vorbeikomme?

An Hardlinks hatte ich auch gedacht, da allerdings meines Wissens VBS keine native Unterstützung dafür bietet, zunächst der Versuch mit Softlinks - sollten eigentlich genügen (und sind vielleicht etwas leichter kommunizierbar ), oder was meinst Du?

Auch "-" oder "_" als Trennzeichen dürften für Durchschnittsbenutzer etwas weniger irritierend sein (und eine Rückwandlung ist ohnehin nicht erforderlich).

Grüße
bastla
Bitte warten ..
Mitglied: Biber
16.06.2007 um 00:27 Uhr
@bastla
Hast durchaus recht... Deine Lösung reicht vollkommen aus...

Mit diesen "echten" verlinkten Dateien, die bei M$ immer noch nicht vernüftig unterstützt werden, hatte ich ja gewisse Hoffnungen in Vi$ta gesetzt...
...na ja... so viele Hoffnungen ja auch nicht. *seufz*
Wieso sollte auch ein Betriebssystem nach kaum 20 Jahren Entwicklungsarbeit so etwas jetzt schon können...

Also - keine Einwände gegen Deine Strategie.
Nachvollziehbar, wartbar, gratis, sofort einsetzbar und effizient - wer sollte da noch verbessern wollen?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
16.06.2007 um 00:41 Uhr
@Biber

Merci.

Zu Deinen/meinen obigen Überlegungen hinzu käme vielleicht auch, dass Softlinks einen eher "temporären" Charakter haben sowie weniger Disziplin vom Anwender (Stichwort "löschen") verlangen.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht
Frage von websolutionsBatch & Shell12 Kommentare

Hallo miteinander. Ich bin auf der Suche nach einem Script, welches alle Dateien einer Ordnerstruktur in einen "Arbeitsordner" kopiert/verschiebt ...

Festplatten, SSD, Raid
RAID 1 auflösen und notfalls wiederherstellen
Frage von mirandaveracruzFestplatten, SSD, Raid5 Kommentare

Hallo zusammen, ich habe eine Workstation mit 2x500GB HDD's im RAID 1-Verbund. Den RAID-Verbund möchte ich nun auflösen und ...

Windows 7
Standardbibliotheken wiederherstellen via script
Frage von r00t3rWindows 719 Kommentare

Hallo zusammen, folgende Problemstellung: die "Eigenen Dateien" liegen auf einer verschlüsselten Truecrypt-Partition. Nach dem Login wird die Partition via ...

Exchange Server
Sicherung von Exchange wiederherstellen - Nicht alle Ordner wieder da
Frage von CloudjumperExchange Server13 Kommentare

Hallo, auf dem Windows Server SBS 2011 habe ich 512 verschiedene Sicherungen mit Windows Sicherung erstellt. Folgende Schritte mache ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 41 MinutenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...