Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Hallo Zusammen,

folgendes Problem oder besser gesagt folgende Frage.

Ich möchte Foto-Ordner (weit über 1000, daher die Frage) die sich immer in der gleichen Ebenentiefe befinden, automatisch in den ersten Unterordner "verschieben". Die Namen der Überordner sind leider nicht immer identisch, sollte das ausschlaggebend für die Problemlösung sein.

IST
Bla \ blub \ blabla \ Fotos
Bla bla \ Bla bla \ Blabla \ Fotos
blabla \ bla \ blabla \ Fotos

SOLL
Bla \ Fotos
Bla bla \ Fotos
blabla \ Fotos

Ich hoffe, ihr könnt mich verstehen und mir bei meinem Problem helfen.

VG
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *Stefan2 »

Was ist denn mit "den ersten" gemeint?
Immer der Erste nach dem Laufwerksbuchstaben?
X:\ Bla \ Fotos

Oder kann man auch einfach alle "Fotos" Ordner um zwei Ebenen nach "oben" verschieben?




Wie wählst du den die "Fotos" Ordner aus, heißen die immer Fotos?
Ist da immer nur ein Ordner auf der "Foto-Ebene"?
Oder willst du einfach den gerade ausgewählten Ordner per Knopfdruck verschieben?

Die "Namen der Überordner" sind hier tatsächlich unerheblich, da wir einfach nach Hierarchieebenen vorgehen.






Nützlich wäre ja, von X:\ aus, in allen ausgewählten "Überordner 1", den jeweils vierten Ordner nach "1" zu verschieben:

IST
1 \ 2 \ 3 \ 4 Fotos

SOLL
1 \ Fotos
1 \ 2 \ 3 \

- Für jeden ausgewählten "1"
-- gehe in "2"
--- gehe in "3"
---- nimm den dortigen Ordner und verschiebe ihn nach "1"





 
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *Hacker »

Hallo ruffneck21,
Alt-F7, Fotos, Enter, Anwenden, alle markieren, F6, "..\..\"?

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Stefan2 wrote: 2019-02-21, 13:52 UTC Oder kann man auch einfach alle "Fotos" Ordner um zwei Ebenen nach "oben" verschieben?
Das wäre auch möglich. Nur wie? :)
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *Stefan2 »

ruffneck21 wrote: 2019-02-21, 14:12 UTC
Stefan2 wrote: 2019-02-21, 13:52 UTC Oder kann man auch einfach alle "Fotos" Ordner um zwei Ebenen nach "oben" verschieben?
Das wäre auch möglich. Nur wie? :)
Im Prinzip so wie Roman es oben zeigt: Ordner markieren > F6 >> ..\..\ >>> Enter
Nur das dann alles in EINEM Foto-Ordner landet, und gleichnamige Bilder überschrieben werden, oder du sie umbenennen musst.


Wir benötigen mehr Details...


 
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Stefan2 wrote: 2019-02-21, 14:25 UTC
ruffneck21 wrote: 2019-02-21, 14:12 UTC
Stefan2 wrote: 2019-02-21, 13:52 UTC Oder kann man auch einfach alle "Fotos" Ordner um zwei Ebenen nach "oben" verschieben?
Das wäre auch möglich. Nur wie? :)
Im Prinzip so wie Roman es oben zeigt: Ordner markieren > F6 >> ..\..\ >>> Enter
Nur das dann alles in EINEM Foto-Ordner landet, und gleichnamige Bilder überschrieben werden, oder du sie umbenennen musst.

Wir benötigen mehr Details...

Ok, also eigentlich wie oben (versucht) zu beschreiben.
"X:\ Bla \ Fotos" sollte immer das Ziel sein. Die Foto-Ordner liegen immer in der gleichen Unterebene.


IST
"X: \ Stadt 1 \ blub \ blabla \ Fotos (Fotos liegt also im Unterordner "blabla" und "blub")

SOLL
"X: \ Stadt 1 \ Fotos (als eigenständiger Ordner)
"X: \ Stadt 1 \ blub \ blabla (wäre dann leer)

Und so soll das bei allen Foto-Ordnern ablaufen.
Hilft dir/euch das weiter?
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *Stefan2 »

Romans Tipp funktioniert bei mir nicht, der neue Fotos -Ordner wird bei mir irgendwo oberhalb erstellt,
aber nicht jeweils vom Ausgangspunkt genau zwei Ebenen nach oben verschoben.

Ich muss das mal testen und brauche mehr Zeit.
Bestimmt existiert schon irgendwo ein Skript (zB "purge sub folder" oder so, gab es doch mal, oder?)


Wahrscheinlich wird es ein neues Skript:
- von X:
- - gehe in jeden markierten Ordner (1)
- - - gehe zwei Ebenen tiefer zu (3)
- - - nimmt dort den Foto-Ordner (4)
- - - Move den Foto-Ordner (4) zwei Ebenen höher zu (1)
- - nächster Ordner



 
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Stefan2 wrote: 2019-02-21, 16:00 UTC Ich muss das mal testen und brauche mehr Zeit.
Bestimmt existiert schon irgendwo ein Skript (zB "purge sub folder" oder so, gab es doch mal, oder?)
Gute Frage, Du bist Power Member, ich bin der Laie. :)
Bin gespannt, vielleicht kriegst Du es hin.
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *norfie² »

Habt MUT :mrgreen: :
Hacker wrote:Alt-F7, Fotos, Enter, Anwenden, alle markieren,
STRG+M (MUT starten)
bei Namen "..\..\[N]" eingeben
Button "Start!"
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Ok, das es so einfach ist hätte ich dann doch nicht gedacht. :)
Vielen Dank!

Gibt es noch einen Trick, dass - sollte ein Ordner mit gleichem Namen bereits in der Ebene vorhanden sein - dieser überschrieben wird, bzw. der Ordnerinhalt einfach zum bestehenden hinzugefügt wird? Das funktioniert leider nicht, er möchte immer einen neuen Namen vergeben.

Also wenn der Ordner "Fotos" --> x:\Ort\Fotos\Archiv\Fotos
so umbenannt wird "..\..\Fotos" will er die Aktion nicht durchführen, da der gleiche Ordner in der Ebene bereits vorhanden ist.
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *norfie² »

ruffneck21 wrote: 2019-02-22, 11:23 UTCGibt es noch einen Trick, dass - sollte ein Ordner mit gleichem Namen bereits in der Ebene vorhanden sein - dieser überschrieben wird, bzw. der Ordnerinhalt einfach zum bestehenden hinzugefügt wird?
Geht nicht mit dem MUT - leider.
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *norfie² »

ruffneck21 wrote: 2019-02-22, 11:23 UTCGibt es noch einen Trick, dass - sollte ein Ordner mit gleichem Namen bereits in der Ebene vorhanden sein - dieser überschrieben wird, bzw. der Ordnerinhalt einfach zum bestehenden hinzugefügt wird?
Lösung des Problems: Mit MUT Namen vergeben, welche sich einfach über Suche ALT+F7 finden lassen. Nach MUT Verschiebeaktion Suche ALT+F7 erneut starten, nach den neu vergebenen Namen suchen lassen, Anwenden, Alles markieren, Umbenennen in "Fotos".

Wenn so was öfter vorkommt, würde allerdings eine Automatisierung (nicht mehr mit dem TCmd) sinnvoll sein.
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *Stefan2 »

Ich habe in der Mittagspause mal etwas versucht...


- speichere den Code im TC Ordner als "MoveSubfolderUp.vbs"
- Ändere die 'USER SETTINGS

- Erstelle einen TC-Button:
Kommando = "%Commander_Path%\MoveSubfolderUp.vbs"
Parameter = "%L"
Startpfad =
Icon = WCMICONS.DLL
Tooltip =


-- Habe ein BACKUP ! ;-)
-- wähle einen oder mehrere Ordner aus
-- klick auf den neuen Button
-- Erledigt, Dateien vom gesuchten Ordner "strSearchedSubfolderName" in bestimmter Tiefe "intSearchedSubfolderDepth"
      wurden verschobenen nach ZielOrdner "selectedFolder \ strTargedSubfolder" und umbenannt bei Namensgleichheit



Code: Select all

'// VBScript for TotalCommander, Stefan, v0.001, 2019-02-22 Fri 16:12:56
'// Purpose:
'// Found at: https://ghisler.ch/board/viewtopic.php?p=351905#p351905
'     Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben
'//
'// --- save the code in TC folder as "MoveSubfolderUp.vbs"
'// --- Modify the 'USER SETTINGS
'// -- Create an TC-Button:
'// Command    = "%Commander_path%\MoveSubfolderUp.vbs"
'// Parameters = "%L"
'// Start path = 
'// Icon file  = WCMICONS.DLL
'// Tooltip    = 
'// 
'// -- HAVE A BACKUP !   ;-)
'// -- select one or more folder to work on
'// -- click the button
'// -- Done, files from strSearchedSubfolderName in intSearchedSubfolderDepth 
'//     are moved to selectedFolder\strTargedSubfolder and renamed if need on duplicates


'//////////////////////////////////////////////////////////////////
'USER SETTINGS

'//the subfolder of selected folder as target to copy file to:
strTargedSubfolder = "Fotos"
'//the name of the subfolder to find below of selected folder:
strSearchedSubfolderName = "Fotos"
'//find subfolder only on the level x:
intSearchedSubfolderDepth = 3



'//////////////////////////////////////////////////////////////////
'THE CODE

If (Wscript.arguments.count < 1) Then
    MsgBox "Please use from TC with parameter like '%L'",,"VBScript - ERROR"
    WScript.Quit
End If 
sTCtempList = Wscript.arguments.Item(0) ' The TC temp file due to the "%L" parameter


SET FSO = CreateObject("Scripting.FileSystemObject")
If  FSO.FileExists(sTCtempList) Then
	Set oTextStream = FSO.OpenTextFile(sTCtempList,1)
	Do Until oTextStream.AtEndOfStream
		strLine = oTextStream.ReadLine
		If(Right(strLine,1)= "\") Then 
			strSelectedFolder = strLine
		Else
			WScript.Quit
		End If

		iStartFldDepth = len(strSelectedFolder) - len(replace(strSelectedFolder,"\",""))-2
		
		strSearchedSubfolderPATH=""
		GetSubFolderPATHinDepthX strSelectedFolder, iStartFldDepth, intSearchedSubfolderDepth, strSearchedSubfolderName
				
		If(strSearchedSubfolderPATH<>"") Then
				If Not(FolderIsEmpty(strSearchedSubfolderPATH)) Then
					strDestinationFld = strSelectedFolder & strTargedSubfolder & "\"
					If Not (FSO.FolderExists(strDestinationFld)) Then 
						FSO.CreateFolder(strDestinationFld)
					End If
			
					strFilesList = GetFilesFromFolder(strSearchedSubfolderPATH)
					arrFilesList = split(strFilesList, vbCRLF)
					For x=0 to Ubound(arrFilesList)
						strFileToCopy = arrFilesList(x)
						If(strFileToCopy<>"") Then 
							sBase = FSO.GetBaseName(strFileToCopy)
							sExte = "." & FSO.GetExtensionName(strFileToCopy)
							iDuplicate=2
							strCopyFile = strFileToCopy
							While FSO.FileExists(strDestinationFld & "\" & strCopyFile)
								strCopyFile = sBase & "_" & iDuplicate & sExte
								iDuplicate=iDuplicate+1
							Wend
							FSO.MoveFile strSearchedSubfolderPATH & "\" & strFileToCopy, strDestinationFld & strCopyFile
						End If
					Next

				End If
				
				'// Remove sub folder:
				If(FolderIsEmpty(strSearchedSubfolderPATH)) Then
					FSO.DeleteFolder strSearchedSubfolderPATH
				Else
					Msgbox "error on DELETE folder: folder is not empty: "&vbLF&vbLF&strSearchedSubfolderPATH
				End If
		Else
			Msgbox "error on GET folder: no searched sub folder <<"&strSearchedSubfolderName&">> found (anymore?) in"&vbLF&vbLF&strSelectedFolder
		End If '(strSearchedSubfolderPATH<>"")
	Loop
	oTextStream.Close
	MsgBox "All Folders Done " 
Else
	MsgBox "E R R O R:  Input file 'sTCtempList' (%L)  not found "_
		 & " OR no selection done before.",,"TCs-VBScript - ERROR"
	WScript.Quit
End If

'//////////////////////////////////////////////////////////////////
Function GetSubFolderPATHinDepthX(strStartFolder,iStartDepth,iWantedDepth, strSearchName)
	strSearchName = Ucase(strSearchName)
	Set oFolder = FSO.GetFolder(strStartFolder)
    For Each oSubFld in oFolder.SubFolders
        iFolderDepth = len(oSubFld.Path) - len(replace(oSubFld.Path,"\","")) - 1 - iStartDepth
        If iFolderDepth = iWantedDepth Then
			If Ucase(oSubFld.Name) = strSearchName Then
				GetSubFolderPATHinDepthX = oSubFld.Path
				strSearchedSubfolderPATH = oSubFld.Path
				Exit For
			End If
        End If
        GetSubFolderPATHinDepthX oSubFld, iStartDepth, iWantedDepth, strSearchName
    Next
End Function 'GetSubFolderPATHinDepthX
Function FolderIsEmpty(strFolder)
	If FSO.FolderExists(strFolder) Then
		Set oFld = FSO.GetFolder(strFolder)
		 If oFld.Files.Count = 0 And oFld.SubFolders.Count = 0 Then
			FolderIsEmpty=True
		Else
			FolderIsEmpty=False
		End If
	End If
End Function 'FolderIsEmpty
Function GetFilesFromFolder(strFolder)
        Set oFolder = FSO.GetFolder(strFolder)
        Set colFiles = oFolder.Files
'        If colFiles.count > 0 Then 
        For Each oFile in colFiles
            sOUT = sOUT & oFile.Name & vbCRLF
        Next
        GetFilesFromFolder = sOUT
End Function 'GetFilesFromFolder
'//////////////////////////////////////////////////////////////////


 
ruffneck21
Junior Member
Junior Member
Posts: 20
Joined: 2012-10-11, 15:24 UTC

Re: Ordner (gleiche Ebenentiefe) in Ordnerhierarchie nach vorne verschieben

Post by *ruffneck21 »

Stefan2 wrote: 2019-02-22, 15:17 UTC Ich habe in der Mittagspause mal etwas versucht...
Vielen Dank für Deine Mühe, ich kann es leider erst in ein paar Tagen testen.
Feedback folgt!
Post Reply