# Dateinamen mit VBScript ändern



## phönix3 (8. November 2007)

Hallo Leute,

ich versuche eine Datei *mit VBScript* von "C:\tmp.ini" in "C:\test.ini" umzubenennen.
Dabei benutze ich folgenden befehl:
*Name "C:\tmp.ini" As "C:\test.ini"*

nur wenn ich den Script ausführe erhalte ich immer eine fehlermeldung an der stelle "As":
*"Microsoft VBScript compilation error: Expected end of statement!"*

in ähnlichen Forenbeiträgen hab ich nichts darüber gefunden, auch google konnte mir nicht weiterhelfen.

ich habe mir auch schon überlegt einfach eine neue Datei mit dem gewünschten Dateinamen zu erstellen und den Inhalt Zeilenweise zu koppieren. Allerdings finde ich, das das eine sehr "unsaubere" lösung ist

über den Grund des Fehlers und mögliche Lösungsansäzte würde ich mich sehr freuen
mfg phönix3


----------



## wincnc (8. November 2007)

Hallo, versuch´s mal so:

```
Dim fso, objFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.GetFile("C:\tmp.ini") ' hier mit Pfadangabe
objFile.Name = "test.ini" ' hier ohne Pfadangebe
```


----------



## phönix3 (8. November 2007)

hi das klappt nur zum teil...
wenn es eine datei mit dem namen "test.ini" schon gibt erscheint dies als Fehlermeldung und er bricht ab...

er sollte aber die vorhandene Datei überschreiben (egal ob sie schreibgeschützt und/oder versteckt ist)


----------



## wincnc (8. November 2007)

Das hat dann auch nichts mehr mit Datei umbenennen zu tun.
Da hattest Du besser nach Datei kopieren fragen sollen.

```
dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\tmp.ini", "C:\test.ini", True
set fso = nothing
```


----------



## Hawkings (8. November 2007)

möglich wäre es auch wenn du die rename methode von Windows verwendest, unter Befehlszeilenreferenz kann man sich auch mal anschauen ;-)


```
Dim lPath, lName, lNewTitle, lCommand,lResult

lPath = "C:\"
lName = "lala.txt"
lNewTitle = "po.txt"

Set Wshshell = CreateObject("Wscript.Shell")
lCommand = "ren "&lName& " "&lNewTitle
WScript.Echo lCommand
lResult = Wshshell.Run (lCommand, 0, True)

If lResult = 0 Then
	MessageBox "Die Datei wurde erfolgreich in "&lNewTitle&" umbenannt", vbOKOnly, vbInformation
Else
	MessageBox "Die Datei konnte aus irgendeinen Grund nciht umbenannt werden, löschen sie sie ;-)", vbOKOnly, vbInformation
End if
```

Code ist einfach mal so schnell hingeschrieben, aber so in etwa...

Mein Vorgänger hat ne super Methode, ist easy


----------



## phönix3 (9. November 2007)

so habs geschaft, das ist der code...

Set bootFile = fsob.GetFile("C:\test.ini")
fsob.DeleteFile bootFile, True

Set tmpFile = fsob.GetFile("C:\tmp.ini")
tmpFile.Name = "test.ini"


----------



## o0Julia0o (14. Februar 2015)

geht das auch mit relativen Pfaden?


----------



## Yaslaw (16. Februar 2015)

o0Julia0o hat gesagt.:


> geht das auch mit relativen Pfaden?


Jepp. Geht auch. Aber im Thread sind verschiedene Antworten. Zeig doch mal ein Beispiel, was du mit relativen Pfaden machen willst.


----------

