Dateien in Ordnername umbenennen

Wow, wäre super wenn es da noch eine Lößung geben würde. Ja, es befinden sich alle Dateien in einem Ordner, sonst ist nix drin. Danke für deine Nachricht.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Code:
Set Shell = WScript.CreateObject("WScript.Shell")
Set Parameter = WScript.Arguments
For i = 0 to Parameter.Count - 1
	Set fso = CreateObject("Scripting.FileSystemObject")
	
	set dir=fso.getfolder(Parameter(i))

	for each file in dir.files

		Pfad=fso.GetParentFolderName(file)

		Datei=fso.GetFileName(file)

		Ordner=left(Datei,5)

		If not fso.FolderExists(Pfad + "\" + Ordner) Then
			fso.CreateFolder Pfad + "\" + Ordner
		End If
		fso.MoveFile file,Pfad + "\" + Ordner + "\" + Datei
	next
Next

Aber immer schön vorichtig damit. Das Script erwartet einen oder mehrere Ordner. Jeder übergebene Ordner wird durchsucht. Die Dateiendung ist dabei egal. Es ist auch egal ob die Dateien überhaupt irgend einem Muster entsprechen. Entsprechend gefährlich ist das Script wenn man es zum Beispiel auf den Windows Ordner loslässt.
 
Zuletzt bearbeitet:
Vielen Dank für das Skript.

Wenn es so gefährlich ist, dann möchte ich mich vergewissern auch alles richtig zu machen. Bestätige mir doch bitte ob folgende Vorgehensweise richtig ist.

Man nehme den Ordner mit den Bildern und ziehe diesen auf das Skript. dabei ist es nicht von Bedeutung wo sich das skript und der ordner mit den bildern befinden. es muss nur darauf geachtet werden, dass sich in dem ordner nur die zu bearbeitenden bilder und sonst keine dateinen befinden.
 
wow, super Idee - hat gefunzt.
Vielen Dank
 
Hallo

Sorry dass ich diesen alten Post nochmals ausgrabe.

Ich habe ein ähnliches Problem.
Ich habe eine Ordner Struktur, die mit einer Zahl beginnt. In diesem Ordner sind 2 weitere Ordner img und tmb.
Ich würde gerne alle Dateien die da drin liegen in den Namen des Ordner mit der Zahl umbenennen.
Wenn die Ordner Zahl 3000 ist. Sollte die Datei dann so aussehen:
Ordner img: or_3000-profil1.jpg
Ordner tmb: 3000-profil1.jpg

Wenn mehrere Dateien in den jeweiligen Ordner sind dann sollte die Zahl hinter dem profil um 1 erhöht werden.

Nach dem Konvertieren sollten die Dateien alle in einen Ordner verschoben werden.

Wäre um Hilfe sehr dankbar.

LG EWSG
 
Sorry hatte deinen Beitrag überlesen bzw wegen Stress auf Arbeit nur wenig Zeit. Danke für die freundliche Erinnerungs PN.

Nur nochmal zur Sicherheit.
Root (Order, den du dem Script übergeben möchtest)
-->1000
---->img
------>Bild.jpg
---->tmb
------>Bild.jpg
-->2000

Bild.jpg soll im Ordner img bleiben und nur in 1000-Bild.jpg umbenannt werden? Soll 1000-Bild.jpg in den Order 1000 oder Root verschoben werden? Sind die Bilder immer im 2. Unterordner img bzw tmb? Ich habe das noch nicht durchschaut.
 
Ich habe eine Order Struktur

galerie
--->1000
|___>img
|___> Name.jpg
|___>tmb
|Name.jpg
---->1001
|___>img
|___> Name.jpg
|___>tmb
|___> Name.jpg
---> usw.


In jedem Hauptnummer Ordner als z.B. 1000 liegt ein Bild hier z.B: 1000.jpg Das soll so bleiben.

In jedem UnterOrdner img und tmb liegen verschiedene Bilder.
Alle Bilder im Ordner tmb sollen nun dieses Format bekommen: 1000-profil1.jpg Das zweite Bild in diesem tmb Ordner: 100o-profil2.jpg usw.
Alle Bilder im Ordner img sollen nun dieses Format bekommen: or_1000-profil1.jpg Das zweite Bild in diesem img Ordner: or_1000-profil2.jpg
Und soll Ordner für Ordner bearbeitet werden.
Und zum schluss sollen alle umgewnadelten Bilder in einen Vorgegeben Ordner z.B: C:\img kopiert werden.

Sende Dir noch paar Screens per MSG.

Danke
 
Danke für die Screenshots. Jetzt habe ich verstanden was die Aktion soll. Das sind Fotos und deren Thumbnail.

Code:
Set Shell = WScript.CreateObject("WScript.Shell")
Set Parameter = WScript.Arguments

For i = 0 to Parameter.Count - 1
	Set fso = CreateObject("Scripting.FileSystemObject")
	
	Set dir=fso.getfolder(Parameter(i))

	For Each folder in dir.SubFolders
		For Each subfolder in folder.SubFolders


			Set SortedList = CreateObject( "System.Collections.Sortedlist" )
			For Each file in subfolder.files
				SortedList.add fso.GetFileName(file), file
			Next

			If SortedList.Count>0 Then
				For j = 0 To SortedList.Count - 1
					If fso.GetFileName(subfolder)="tmb" Then
						fso.CopyFile SortedList.GetByIndex(j), "C:\img\" + fso.GetFileName(folder) + "-profil" + CStr(j+1) + ".jpg"				
					ElseIf fso.GetFileName(subfolder)="img" Then
						fso.CopyFile SortedList.GetByIndex(j), "C:\img\or_" + fso.GetFileName(folder) + "-profil" + CStr(j+1) + ".jpg"				
					End If
				Next
			End If
		Next
	Next
Next

Textdatei oder ähnliches werden ebenfalls kopiert und in .jpg umbenannt. Idealerweise sollten im img und tmb Verzeichnis ausschließlich jpg Dateien liegen. Die Dateien werden stumpf nummeriert. Es gibt kein Abgleich der Dateinamen zwischen img und tmb Verzeichnis. Solange es keine fehlenden Thumbnails oder Bilder gibt, sollte das passen.

Rest wie gehabt. Galerie Order auf das Script ziehen dann kopiert es die Bilder nach C:\img\
 
Zuletzt bearbeitet:
Hallo little skunk
der Thread ist ja schon soooo alt hoffe das trotzdem noch jemand antwortet
das Script ist voll cool und funzt nur ich bräuchte noch ne kleine Erweiterung für das Script sprich die Dateien sollen nicht nur den namen des Ordners haben. Ich weiss ich bräuchte da wohl mehrere Scripts wenn ich meine Wünsche erfüllt haben möchte .
Es sollte in etwa so aus sehender Ordner hat den namen "12345" und jetzt kommen in den Ordner Fotos die dann so umbenannt werden sollen "12345_unten" oder "12345_oben"
kann man das Script so umschreiben das er alle Fotos mit dem Ordnernamen + "unten" umbenennt ?
Wenn ich eine Vorlage hab kann ich das Script ja selber anpassen an meine wünsche .
danke schon mal im voraus
 
Ich schände mal Leichen, weil ich per google hier landet. :fresse2:

Ist es irgendwie möglich Windows dazu zu bekommen, dass es VB Skripte auch auf Pfade anwenden kann, die >259 Zeichen lang sind?
 
Was hast du für ein Windows?
Ab Win 10 1607 kann man mit einem Registryeintrag die max. Pfadlänge auf 32767 Zeichen hochsetzen:
 
W10 20H2, aber Enable Win32 long paths gilt eben leider nicht für VB Skripte o.Ä., sondern nur für Win32 Software bzw. Store Apps.
 
Das liegt dann aber am WSH und nicht an Windows.
Die Programme müssen natürlich auch in der Lage sein, mit langen Pfadnamen umzugehen.
 
Versuche es mit PowerShell, da sollte es funktionieren, oder muss es unbedingt VB sein?
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh