Kopieren mit größenangabe?

boyker

Grünschnabel
Hi Leuts,

Ich habe folgendes Problem:

Ein Ordner "Ordner_1" mit ca. 3,5 GB Daten.

Ein Ordner "Ordner_2" mit ca. 4 GB Daten.

Ein Ordner "Ordner_3" mit ca. 1,5 GB Daten.

Diese Daten-Ordner möchte ich gerne auf CD's Brennen, aber so wie sie sind, also nicht gepackt oder als Backup! Da ich auf die Daten immer Zugriff haben muss.

Den 3. Ordner habe ich bereits auf CD's gebrannt.
Dazu habe ich auf einem anderen Laufwerk 3 Ordner mit "CD1", "CD2" .u.s.w erstellt und dort zu jeweils ca 650 MB die Daten rein kopiert.

Nun frage ich mich, ob man das nicht irgendwie automatisieren kann, z.B. per Batchdatei? Oder kennt jemand ein Kopierprogramm wo man sowas einstellen kann?

Ach ja, ich suche keine Möglichkeit, wo ich ne Partition mit 650MB erstellen muss oder sowas.

Würde mich über eine Antwort freuen.

M.f.G.
Boyker Köster

-- Nachtrag --
Es handelt sich bei den Daten hauptsächlich um Dokumente und Datenbankdateien.
Also keine Files die größer als 650MB sind und somit gesplittet werden sollen.
 
Zuletzt bearbeitet:
Ich würde das mit WinRAR machen und die Filegröße auf 650 MB stellen, und das dann damit packen. Ein anderes Programm kenne ich nicht.
 
Danke, aber wie ich schon geschrieben hatte:

>> Diese Daten-Ordner möchte ich gerne auf CD's Brennen, aber so wie sie sind, also nicht gepackt oder als Backup! Da ich auf die Daten immer Zugriff haben muss.

suche ich eine Methode ohne Packen oder Backup Da ich jederzeit auf diese Daten zugriff haben muss.

gruß
Boyker
 
...oder per Skript

Dieses kleine Programm verschiebt Dateien in Ordner damit du sie leichter brennen kannst.
Code:
'Verteilt den Inhalt eines Verzeichnises auf mehrere,
'die eine festgelegte Maximalgröße nicht überschreiten

'--------------------------------------------------------------------
'----- Einstellungen, Werte nach dem "=" können geändert werden -----
'--------------------------------------------------------------------

'Maximale Verzeichnisgröße in Megabyte:
maxSize = 1
'Namen der neuen Verzeichnisse:
Name = "CD_" 'Neues Verzeichnis wird dann CD_1, CD_2, etc. heißen
'Name des Verzeichnisses für zu große Dateien:
gehtNicht = "zu groß"
'Abbruch nach sovielen Verzeichnissen:
cancel = 10
'dient als notbremse falls durch eine endlosschleife sonst
'unendlich verzeichnisse angelegt werden
'wenn mehr als die oben genannte anzahl erstellt werden soll
'kann die Zahl erhöht werden

'----------------------------------------------------------------
'----- Ende Einstellungen, ab hier bitte nichts mehr ändern -----
'----------------------------------------------------------------

app     = "DirSplit"
dirNach = Name
maxSize = maxSize * (1024^2)

if WScript.Arguments.count = 1 then
	dirVon = WScript.Arguments(0)
else
	dirVon = InputBox("Welches Verzeichnis soll geteilt werden?",app,"")
	if dirVon="" then
		WScript.Quit
	end if
end if

set FSO = CreateObject("Scripting.FileSystemObject")

if not fso.folderExists(dirVon) then
	msgBox "Verzeichnis existiert nicht!",vbokonly,app
	WScript.quit
end if

tooBig  = false
fin     = false
n       = 0
curSize = 0
esc     = 0

do while not fin

	esc=esc+1
	if esc=cancel then
		msgbox "Abbruch: Maixmale Anzahl Verzeichnisse erreicht!",vbokonly,app
		wscript.quit
	end if

	n       = n + 1
	curName = dirNach & n
	curSize = 0

	if not fso.folderExists(curName) then
		fso.createFolder(curName)
	end if

	if fso.getFolder(dirVon).Files.count = 0 then
		fin=true
	end if

	for each f in fso.getFolder(dirVon).Files
		if (curSize + f.size) <= maxSize then
			curSize = curSize + f.size
			msgbox curName & "\" & f.name
			f.move curName & "\" & f.name
		else
			if f.size > maxSize then
				tooBig = true
				if not fso.folderExists(gehtNicht) then
					fso.createFolder(gehtNicht)
				end if
				f.move gehtNicht & "\" & f.name
			else
				exit for
			end if
		end if
	next

loop

msg = "Fertig!" & vbcrlf & "Es wurden " & n & " Verzeichnis(se) erstellt"

if tooBig then
	msg = msg & vbcrlf & "Eine oder mehrere Dateien sind größer als die maximal zugelassene Verzeichnisgröße und wurden ins Verzeichnis " & gehtNicht & " verschoben!"
end if

msgbox msg,vbokonly,app
Diesen Sourcecode mit dem Notepad als "DirSplit.vbs" speichern (wichtig ist .vbs am Ende und das Ganze in Anführungszeichen).
Wenn WSH installiert ist (normal Standard) kannst du es wie ein Programm starten.

Am Anfang der Datei unter Einstellungen kannst du folgendes ändern:
maxSize = 650
legt die Anzahl der MB pro Verzeichnis fest.
Name = "CD_"
Namen für die neuen Verzeichnisse, die werden dann CD_1, CD_2, etc. heißen
gehtNicht = "zu groß"
So heißt das Verzeichnis in das Dateien verschoben werden die größer sind als die eingestellt maxSize und damit nicht auf eine CD passen würden.
cancel = 10
Mit cancel kannst du einstellen nach wieviel Verzeichnissen abgebrochen wird.
Das ist normal unwichtig aber wenn du mehr als 10 CDs aus einem Ordner machen willst solltest du das hier erhöhen.
Cancel ist nur drin als "Notbremse" weils bei mir im Test mal vorgekommen ist das er mit tausende Ordner angelegt hat wegen fehlerhafter Schleife, mit Cancel wird aber immer nach dieser Zahl abgebrochen um das zu verhindern.

Verwendung auf eigene Gefahr und so :-)
Backup vorher wär sinnvoll.
 
@ Retlaw:
ich könnt dich knutschen!
Danke danke danke!

Verwendung auf eigene Gefahr und so
Backup vorher wär sinnvoll.

Auf der Platte war kein Platz mehr und um die alten Dateien nicht zu verwerfen, wollte mein Kumpel die auf CD's haben. Und für den Fall, das er mal eine Datei (z.B. nen Brief) benötigt, sollte es eben so gebrannt werden, das er da schnell drauf zugreifen kann.

ich habe gestern schon mal angefangen und per hand 6GB gebrannt. Hat eine halbe ewigkeit gedauert und ziemlich viele Nerven gekostet.

Werde dein Script gleich mal bei mir testen und dann bei ihm die restlichen ortner brennen. :)

gruß
Boyker

-- Nachtrag --
So lange das Quellverzeichniss keine Unterverzeichnisse hat, funltioniert das super.

Code:
	for each f in fso.getFolder(dirVon).Files
		if (curSize + f.size) <= maxSize then
			curSize = curSize + f.size
			msgbox curName & "\" & f.name
			f.move curName & "\" & f.name
		else
			if f.size > maxSize then
				tooBig = true
				if not fso.folderExists(gehtNicht) then
					fso.createFolder(gehtNicht)
				end if
				f.move gehtNicht & "\" & f.name
			else
				exit for
			end if
		end if
	next

loop
ich kenn mich mit vbs so gut wie garnicht aus, aber wenn ich das richtig sehe, ist diese Schleife für die prüfung und das verschieben verantwortlich oder?
kann man da nicht noch was einbringen, so das er auch die unterverzeichnisse druch geht?

gruß
Boyker
 
Zuletzt bearbeitet:
Habs geändert damit auch Unterverzeichnisse mitverschoben werden. Da Dateien darin normal zusammengehören behandel ich Unterverzeichnisse wie eine einzige Datei und verschiebe sie nur als Ganzes.
Code:
'Verteilt den Inhalt eines Verzeichnises auf mehrere,
'die eine festgelegte Maximalgröße nicht überschreiten

'--------------------------------------------------------------------
'----- Einstellungen, Werte nach dem "=" können geändert werden -----
'--------------------------------------------------------------------

'Maximale Verzeichnisgröße in Megabyte:
maxSize = 650
'Namen der neuen Verzeichnisse:
Name = "CD_" 'Neues Verzeichnis wird dann CD_1, CD_2, etc. heißen
'Name des Verzeichnisses für zu große Dateien:
gehtNicht = "zu groß"
'Abbruch nach sovielen Verzeichnissen:
cancel = 20
'dient als notbremse falls durch eine endlosschleife sonst
'unendlich verzeichnisse angelegt werden
'wenn mehr als die oben genannte anzahl erstellt werden soll
'kann die Zahl erhöht werden

'----------------------------------------------------------------
'----- Ende Einstellungen, ab hier bitte nichts mehr ändern -----
'----------------------------------------------------------------

app     = "DirSplit"
dirNach = Name
maxSize = maxSize * (1024^2)

if WScript.Arguments.count = 1 then
	dirVon = WScript.Arguments(0)
else
	dirVon = InputBox("Welches Verzeichnis soll geteilt werden?",app,"")
	if dirVon="" then
		WScript.Quit
	end if
end if

set FSO = CreateObject("Scripting.FileSystemObject")

if not fso.folderExists(dirVon) then
	msgBox "Verzeichnis existiert nicht!",vbokonly,app
	WScript.quit
end if

tooBig  = false
fin     = false
n       = 0
curSize = 0
esc     = 0

do while not fin

	esc=esc+1
	if esc=cancel then
		msgbox "Abbruch: Maximale Anzahl Verzeichnisse erreicht!",vbokonly,app
		wscript.quit
	end if

	n       = n + 1
	curName = dirNach & n
	curSize = 0

	if not fso.folderExists(curName) then
		fso.createFolder(curName)
	end if

	if fso.getFolder(dirVon).Files.count = 0 and fso.getFolder(dirVon).SubFolders.count = 0 then
		fin=true
	end if

	for each f in fso.getFolder(dirVon).Files
		if (curSize + f.size) <= maxSize then
			curSize = curSize + f.size
			f.move curName & "\" & f.name
		else
			if f.size > maxSize then
				tooBig = true
				if not fso.folderExists(gehtNicht) then
					fso.createFolder(gehtNicht)
				end if
				f.move gehtNicht & "\" & f.name
			else
				exit for
			end if
		end if
	next

	for each f in fso.getFolder(dirVon).SubFolders
		if (curSize + f.size) <= maxSize then
			curSize = curSize + f.size
			f.move curName & "\" & f.name
		else
			if f.size > maxSize then
				tooBig = true
				if not fso.folderExists(gehtNicht) then
					fso.createFolder(gehtNicht)
				end if
				f.move gehtNicht & "\" & f.name
			else
				exit for
			end if
		end if
	next

loop

msg = "Fertig!" & vbcrlf & "Es wurden " & n & " Verzeichnis(se) erstellt"

if tooBig then
	msg = msg & vbcrlf & "Eine oder mehrere Dateien sind größer als die maximal zugelassene Verzeichnisgröße und wurden ins Verzeichnis " & gehtNicht & " verschoben!"
end if

msgbox msg,vbokonly,app
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück