Sonstiges > Offtopic
Mit VBScript Filenames ergänzen bzw ändern
adminnaddel:
Moin liebe Gemeinde,
ich habe das Script noch um eine LogDatei erweitert!
Was ich aber dazu bräucht, wo ich derzeit aber den Wald vor Bäumen nicht sehe, ist ein ErrorHandling! Mit
On Error Resume Next
möchte ich vermeiden, das ich ein Laufzeitfehler, bzw Zugriffverletzung bekomme, wie es leider nach 20% der Dateien passiert ist!
Jedoch soll, wenn das Script aufgrund des Errors ins nächste File springt, das mir die übersprungende Datei ins Log geschrieben wird, so kann ich später sehen, welche Datei nicht unbenamst wurde!
Script:
Option Explicit
Dim oFso, oFolder, oShell, objFile, objShell, objFolder, objFolderItem
Dim sPfad, NewFileName, MyFile, strNewName, objPath, intValue
Dim SearchString, SearchChar, Pos, ReplaceWith, oFolderSub, OnlyPath
Call FolderAuswahl
Sub FolderAuswahl
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Const OverWriteFiles = True
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, "", NO_OPTIONS, "H:\")
Set objFolderItem = objFolder.Self
sPfad = objFolderItem.Path
End Sub
Call Main
Sub Main
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oShell = WScript.CreateObject("WScript.Shell")
SearchChar = " " ' Search for " ".
Set oFolder = oFso.GetFolder(sPfad)
ReplaceFileName oFolder
WScript.Echo "Auftrag ausgeführt!"
End Sub
Call ReplaceFileName (oFolder)
Sub ReplaceFileName(oFolder)
For Each objFile In oFolder.Files
SearchString = objFile.Name
ReplaceWith = "_"
Pos = Instr(1, SearchString, SearchChar)
If Len(Pos) > 0 Then
NewFileName = Replace(SearchString, SearchChar, ReplaceWith)
OnlyPath = Left(objFile.Path,InStrRev(objFile.Path, "\"))
Set MyFile = oFso.GetFile(OnlyPath & SearchString)
MyFile.Move OnlyPath & "\" & NewFileName
End If
Next
For Each oFolderSub In oFolder.SubFolders
ReplaceFileName oFolderSub
Next
End Sub
Call LogDatei
Sub LogDatei
lg
Andy
sloe:
Error-Handling im WSH kann ganz prickelnd werden...
Könnte aber so gehen:
' *************************************
' C:\KillSpace3.vbs
' Ersetze Leer-Zeichen in Dateinamen und in den Unterordnern
' mit Log für Fehler
' 25.01.05 11:24
' Version 3
' (C) by Sloe 2005
' *************************************
Option Explicit
Const ForWriting = 2
Dim PathLogErrorFiles, ErrorFileName, ErrorReport
PathLogErrorFiles = "E:\TestKillSpace\ErrorFiles.txt"
Dim oFso, oFolder, oShell, objFile, objShell, objFolder, objFolderItem
Dim sPfad, NewFileName, MyFile, strNewName, objPath, intValue
Dim SearchString, SearchChar, Pos, ReplaceWith, oFolderSub, OnlyPath
Call FolderAuswahl
Sub FolderAuswahl
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Const OverWriteFiles = True
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, "", NO_OPTIONS, "H:\")
Set objFolderItem = objFolder.Self
sPfad = objFolderItem.Path
End Sub
Call Main
Sub Main
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oShell = WScript.CreateObject("WScript.Shell")
Set ErrorReport = oFso.OpenTextFile(PathLogErrorFiles, ForWriting, true)
SearchChar = " " ' Search for " ".
Set oFolder = oFso.GetFolder(sPfad)
ReplaceFileName oFolder
WScript.Echo "Auftrag ausgeführt!"
End Sub
Call ReplaceFileName (oFolder)
Sub ReplaceFileName(oFolder)
For Each objFile In oFolder.Files
SearchString = objFile.Name
ReplaceWith = "_"
Pos = Instr(1, SearchString, SearchChar)
If Len(Pos) > 0 Then
NewFileName = Replace(SearchString, SearchChar, ReplaceWith)
OnlyPath = Left(objFile.Path,InStrRev(objFile.Path, "\"))
Set MyFile = oFso.GetFile(OnlyPath & SearchString)
On Error Resume Next
MyFile.Move OnlyPath & "\" & NewFileName
If Err.Number <> 0 Then
Call LogDatei(SearchString)
Err.Clear
End If
End If
Next
For Each oFolderSub In oFolder.SubFolders
ReplaceFileName oFolderSub
Next
End Sub
Sub LogDatei(ErrorFileName)
ErrorReport.WriteLine(ErrorFileName & " Grund: " & Err.Description & vbCrLf)
End Sub
Gruß
Sloe
adminnaddel:
Hey .. vielen Dank! Lasse ich heute Nacht mal laufen! Ich weiß, das an einigen Dateien das Script sich schwer tut, dann mal schauen, ob es was schreibt!
Nochmals Danke
lg Andy
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln