antonof
Goto Top

VBScript zum Umbennen von einer Datei

Hallo zusammen!
Leider bin ich nicht ganz vom Fach.....
Ich gehöre eher zu den Endusern.
Jetzt schon mal sorry, wenn ich den einen oder anderen Fachbegriff nicht verstehe oder verwende.
Freue mich aber trotzdem hier mitmachen zu dürfen.

Habe jetzt schon ne Weile exprimentiert, aber ich kommen noch nicht zum gewünschten Ziel. face-sad

Absicht ist es ein Script zu erstellen, welches die letzte/neueste Datei in einem Verzeichins findet.
Anschließend soll der Anwender aufgefordert werden diese Datei umzubennen.

Mein Versuch sieht so aus:

Dim Show
Dim fso
Dim ordner
Dim Verzeichnis
Dim ordnerin
Dim Datei
Dim Dateianzahl
Dim Eingabe
Dim Endung

'In welchem Verzeichnis soll gesucht werden?  

Verzeichnis= "C:\Test"  

'Nach welcher Dateiendung soll gesucht werden?  

Endung = txt

Set fso = CreateObject("Scripting.FileSystemObject")  
Set ordner = fso.GetFolder(Verzeichnis)
Set ordnerin = ordner.files
Dateianzahl = ordnerin.count
for each Datei in ordnerin
	If right(Datei.name,3) = "Endung" then  
	Show = Show & vbNewline & Datei.DateCreated 
	end if

		If now - Datei.DateCreated < 0.00016 then 'ca. 16 Sekunden Pause  
		'Mit der Do-while-Schleife wird ein Abbrechen verhindert  
		Do while Eingabe = cancel
		Eingabe = InputBox("Es wurde eine neue Datei angelegt!"&vbnewline&vbnewline&"Name der Datei: "&Datei.name&vbnewline&"Datei erstellt am: "&Datei.DateCreated&vbnewline&vbnewline&"Bitte einen Namen für die Datei vergeben:"&vbnewline,"Umbenennen","2012-04-11_")  

		loop 

'Bevor der neue Name der Datei zugewiesen wird, soll gepeüft werden, ob eine Datei mit dem gleichen Namen schon im Verzeichnis existiert.   
'Wenn JA, dann msgbox und wieder zur Input box zurück  

'if (fso.FileExists(Verzeichnis&"\"&Eingabe&"."&Endung)) Then  

'msgbox "Datei existiert schon!"&vbnewline&vbnewline&"Bitte einen neuen Namen vergeben!"  


'end if  
 

		Datei.name = Eingabe&".txt"  

		end if
next

Gesucht wird hier nach einer Datei mit der Endung "txt", die nicht älter ist wie ca. 16 Sekunden.
Diese Datei soll dann durch den Anwender Umbenannt werden.
Das klappt soweit recht gut.
Es soll aber noch eine Absicherung stattfinden...... (in Zeile 35 und 36 beschrieben)
Und hier knallts.....
Wenn der Name schon existiert kommt es zur einer Fehlermeldung.
Es gibt die Möglichkeit wohl das über FileExists abzufangen, aber ich bekomme es nicht hin.

Hat jemand von Euch einen Tip?
Oder gibt es da noch einen einfacheren Ansatz?
(Wie schon gesagt bin nicht ganz vom Fach...)
Jetzt schon mal DANKE

antonof
Kommentar vom Moderator Biber am 02.05.2012 um 00:39:33 Uhr
Zitat von @antonof:
VBScript zum Umbennen von einer Datei
...
Jetzt schon mal sorry, wenn ich den einen oder anderen Fachbegriff nicht verstehe oder verwende
Hmmm ja.. dann ein Tipp: unter Experten heisst es nicht "umbennen von einer Datei", sondern nur "umbennen einer Datei"

Anschließend soll der Anwender aufgefordert werden diese Datei umzubennen.
Set /a rgc+=2
#819

Content-Key: 184329

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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: bastla
bastla 02.05.2012 um 00:36:18 Uhr
Goto Top
Hallo antonof und willkommen im Forum!

So wird eher ein Schuh draus:
'In welchem Verzeichnis soll gesucht werden?  
Verzeichnis= "C:\Test"  

'Nach welcher Dateiendung soll gesucht werden?  
Endung = "txt"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set ordner = fso.GetFolder(Verzeichnis)
Set ordnerin = ordner.files
Dateianzahl = ordnerin.count

For Each Datei In ordnerin
    If LCase(Right(Datei.Name, 3)) = LCase(Endung) Then
        Alter = DateDiff("s", Datei.DateCreated, Now) 'Alter in Sekunden berechnen  
        Show = Show & vbNewLine & Datei.DateCreated & vbTab & Alter & vbTab & Datei.Name
    
        If Alter < 16 Then 'ca. 16 Sekunden Pause  
            'Mit der Do-Loop-Schleife wird ein Abbrechen verhindert  
            Eingabe = ""  
            Do
                Eingabe = InputBox("Es wurde eine neue Datei angelegt!" & vbNewLine & vbNewLine & _  
                    "Name der Datei: " & Datei.Name & vbNewLine & _  
                    "Datei erstellt am: " & Datei.DateCreated & vbNewLine & vbNewLine & _  
                    "Bitte einen Namen für die Datei vergeben:" & vbNewLine, _  
                    "Umbenennen", "2012-04-11_")  

                'Bevor der neue Name der Datei zugewiesen wird, soll geprüft werden, ob eine Datei mit dem gleichen Namen schon im Verzeichnis existiert.   
                If fso.FileExists(Verzeichnis & "\" & Eingabe & "." & Endung) Then  
                    MsgBox "Datei existiert schon!" & vbNewLine & vbNewLine & "Bitte einen neuen Namen vergeben!"  
                    Eingabe = "" 'Eingabe löschen  
                End If

            Loop Until Eingabe <> ""  

            Datei.Name = Eingabe & "." & Endung  
        End If
    End If
Next
Ob Du irgendwann noch die in der Variablen "Show" gesammelten Daten anzeigst, musst Du selbst entscheiden (und auch, ob / wie Du auf die zwischenzeitlich erfolgte Namensänderung hinweisen willst) ...

Grüße
bastla
Mitglied: antonof
antonof 03.05.2012 um 22:59:20 Uhr
Goto Top
WOW, vielen Dank bastla!

Du hat recht aus dem alten Stiefel wurde ein glänzender Schuh. face-smile

(bin aber froh, dass ich gar nicht so verkehrt war)

Habe es heute ausprobiert das sieht ganz ordentlich aus!

Ein Test über längere Zeit wird es noch zeigen, ob es so brauchbar ist.