[VBScript] Nur Dateien mit einen bestimmten Extension zählen

Und wie sieht der neue Name aus?

Jeder Datei im Verzechnis mit der Extension .PDF soll das aktuelle Datum (now) voran gestellt werden.

(Dateiname.pdf -> 18.01.2012_Dateiname.pdf)

Hab die MsgBox mal direkt unter die newName Zuweisung gesetzt - der Inhalt von newName ist richtig. Offensichtlich mag "er" oFile.name nicht bzw. es steht nicht das drin was erwartet wird.
Das andere ist, daß mit dieser Zuweisung (soweit war ich ja schon mal) ja noch nicht der neue Name auch gespeichert wird.
Idee (gerade eben): kann ich nicht den move-Befehl "missbrauchen"?

z.B. oFSO.MoveFile oFolder1 & "\*.pdf", oFolder2 & "\" & newName

Das ganz müßte dann natürlich in die Schleife und hätte den Vorteil, daß ich nicht erst umständlich alle pdf-Dateien umbenenne und dann verschiebe, sondern gleich wenn Sie gefunden werden, mit neuem Namen ins andere Verzeichnis wandern.
 
Dein Problem ist die Verwendung von

Visual Basic:
eTime=now

"Now" ohne Formatierung gibt nämlich "dd.mm.yyyy hh:mm:ss" zurück, und Doppelpunkte im Dateinamen.......

Deine Magie muss lauten:

Visual Basic:
eTime=Format(Now,"dd.mm.yyyy")
 
Mit der Zuweisung ist automatisch der neue Name gespeichert - mindestens bei all meinen Tests

Visual Basic:
'Mein Test der funktioniert
    Dim f   As File
    Set f = fso.GetFile("C:\LocalData\Temp\1.1.1.test10.txt")
    f.Name = "1.1.1.test.txt"
    Set f = Nothing


item: now() direkt als String auswerten ist sehr suboptimal. Am besten mittels format() in ein String_fromat bringen. Wenn du da noch die Reihenfolge Jahr_Monat_Tag wählst, kriegst du eine Dateiname der nach Datum sortierbar ist: 2012_01_19
Visual Basic:
sTime = format(now, "YYYY_MM_DD")

item: Das mit dem Move geht auch. Aber auch da gilt. oFolder sind Objekte und keine Strings. Wenn du den Pfad des Ordners brauchst, dann kannst du mit oFolder1.path darauf zugreifen. Und um einen Pfad zu erstellen empfiehlt es sich die FSO-Methode BuildPath() zu verwenden.

item: Den Move kannst du auch direkt aus dem File-Objekt oFile machen.
Visual Basic:
sTime =  format(now, "YYYY_MM_DD")
....
    newName = sTime & "_" & oFile.name
    Call oFile.move(oFSO.buildPath(oFilder2.path, newName))

Mein Script das funktioniert sieht gerade so aus
Visual Basic:
    Dim sDate               As String
    Dim sNewName            As String
    Dim oFile               As Object
    Dim oFolderSource       As Object
    Dim oFSO                As Object
    
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    
    sDate = Format(Now, "YYYY_MM_DD_")
    For Each oFile In oFSO.GetFolder("C:\LocalData\Temp\test").Files
        If oFSO.GetExtensionName(oFile.Path) = "pdf" Then
            sNewName = sDate & oFile.Name
            oFile.Copy (oFSO.BuildPath("C:\LocalData\Temp\test\sub", sNewName))
        End If
    Next oFile

    Set oFSO = Nothing
 
Zurück