meiseed
Goto Top

Problem beim Script das eine Datei in ein anderen ordner kopiert und umbenennen soll

HI @ all,

ich hab da ein Script mit dem ich Datei(en) in ein anderen Ordner kopiere

und jetzt brauch ich da noch ein funktion die die Datei dann umbenennt und zwar soll an den Namen dann das aktuelle Datum drangegängt werden

hier mal das Script

Set fso = CreateObject("Scripting.FileSystemObject")  
Set f1 = fso.GetFile("c:\test1\1.zip")  
f1.copy ("c:\test2\")  


Die Datei 1.zip wird jetzt inden Ordner test2 kopiert das geht auch und jetzt soll die Datei in dem test2 Ordner nicht 1.zip heißen sondern

aus 1.zip soll dann 1_2007-11-15_11:37.zip werden.

Wie kann ich das jetzt realiesieren.


Gruß
MeiSeed

Content-Key: 73616

Url: https://administrator.de/contentid/73616

Printed on: April 24, 2024 at 10:04 o'clock

Member: bastla
bastla Nov 15, 2007 at 11:22:38 (UTC)
Goto Top
Hallo MeiSeed!

Vorweg zwei Anmerkungen:
  • Auch wenn das Script nur zu Testzwecken gedacht ist, solltest Du dennoch die Dateinamen/-pfade (zB "c:\test2\") nicht als Konstante verwenden, sondern besser in eine Variable stellen - damit kannst Du diesbezügliche Änderungen an nur einer Stelle im Code durchführen.
  • Einen Dateinamen mit einem enthaltenen ":" kann ich wirklich nicht empfehlen (daher ersetze ich diesen in meinem Beispiel durch einen ".").

strSourceFile = "c:\test1\1.zip"  
strTargetFolder = "c:\test2"  

Set fso = CreateObject("Scripting.FileSystemObject")  

dtNow = Now 'Zeitpunkt festhalten und ...  
'... dafür formatierten Timestamp erstellen  
strTimestamp = Year(dtNow) & "-" & Month(dtNow) & "-" & Day(dtNow) & "_" & _  
	Replace(FormatDateTime(dtNow, vbShortTime), ":", ".")  

Set f1 = fso.GetFile(strSourceFile)

strExt = fso.GetExtensionName(f1.Name) 'Dateityp auslesen  
'Dateityp (inkl "." davor) aus dem Namen entfernen, Timestamp und Dateityp daran anfügen  
strFileNameNew = Left(f1.Name, Len(f1.Name) - Len(strExt) - 1) & "_" & strTimestamp & "." & strExt  

'Zielangabe mit vollem Pfad erstellen   
f1.Copy ( strTargetFolder & "\" & strFileNameNew)  

Grüße
bastla
Member: MeiSeed
MeiSeed Nov 15, 2007 at 12:39:27 (UTC)
Goto Top
Danke dir bastla

das du mir so schnell geholfen hast.

gruß
MeiSeed
Member: bastla
bastla Nov 15, 2007 at 13:44:26 (UTC)
Goto Top
Hallo MeiSeed!

wenn ich mehrere ordner kleichzeitig kopieren will ...
... stellt sich zunächst die Frage, ob diese Ordner immer gleich bleiben oder Du sie ohnehin irgendwie (und sei es per Eingabe/Auswahl durch den Benutzer) ermitteln musst. Im ersten Fall könntest Du folgende Schleife verwenden:
arrOrdner = Array( _
	"c:\test1", _  
	"c:\test2", _  
	...
	...
	...
	"d:\KeinTest")  

For Each strOrdner in arrOrdner
	objOrdner = fso.GetFolder(strOrdner)
	...
	...
	...
Next
Natürlich (wenn auch weniger übersichtlich) könntest Du die Ordner auch in eine Zeile schreiben:
arrOrdner = Array("c:\test1", "c:\test2", ..., ..., ..., "d:\KeinTest")  

Auch in den anderen Fällen läuft es auf die Verwendung einer Schleife (zB zum Auslesen aus einer Textdatei) hinaus - mehrere Variable zu verwenden, wenn Du ja eigentlich immer den gleichen Ablauf hast, ergäbe dabei keinen Sinn.

Grüße
bastla