Ayuda renombrar archivos con VBScript

Iniciado por guillehampp, 28 Enero 2015, 15:11 PM

0 Miembros y 1 Visitante están viendo este tema.

guillehampp

Hola, estoy intentando renombrar(Convertirlos a mayusculas) todos los archivos de una carpeta,
este es mi codigo, cuando lo ejecuto me arroja este error

Argumento o llamada a procedimientos no valida

Set objfso = CreateObject("scripting.filesystemobject")
Set folder = objfso.getfolder("D:\Pelis\")
Dim myname
For Each archivos In folder.Files
    myname = UCase(CStr(archivos))
    archivos.Name = myname
Next


Muchas Grcias!

Eleкtro

#1
El error te indica que te indica que el nombre no puede contener caracteres ilegales, pues le estás pasando el nombre de la ruta absoluta, no le estás pasando el nombre del archivo, pero además de eso, te daría otro error consequente, ya que no puedes renombrar un archivo usando el mismo nombre indistintamente de si son mayúsculas o minúsculas, debes mover el archivo.

Puedes utilizar el método MoveFile, o renombrar 2 veces el archivo (que sería lo mismo a moverlo dos veces).

Mover:
Código (vb) [Seleccionar]
Option Explicit

Dim oFSO, oDir, oFile, _
   filePath, dirName, fileName, fileExt, _
   newFileName, newFileExt

Set oFSO    = CreateObject("scripting.filesystemobject")
Set oDir    = oFSO.getfolder("D:\Pelis\")

For Each oFile In oDir.Files

    filePath    = oFSO.GetAbsolutePathName(oFile)
    dirName     = oFSO.GetParentFolderName(oFile)
    fileName    = oFSO.GetBaseName(oFile)
    fileExt     = oFSO.GetExtensionName(oFile)
   
    newFileName = UCase(fileName)
    newFileExt  = LCase(fileExt)

    If (fileName & "." & fileExt) <> (newFileName & "." & newFileExt) Then
        Call oFSO.MoveFile(filePath, dirName & "\" & newFileName & "." & newFileExt)
    End If
       
Next


Renombrar:
Código (vb) [Seleccionar]
Option Explicit

Dim oFSO, oDir, oFile, _
   filePath, dirName, fileName, fileExt, _
   newFileName, newFileExt, newFilePath

Set oFSO    = CreateObject("scripting.filesystemobject")
Set oDir    = oFSO.getfolder("D:\Pelis\")

For Each oFile In oDir.Files

   filePath    = oFSO.GetAbsolutePathName(oFile)
   dirName     = oFSO.GetParentFolderName(oFile)
   fileName    = oFSO.GetBaseName(oFile)
   fileExt     = oFSO.GetExtensionName(oFile)
   
   newFileName = UCase(fileName)
   newFileExt  = UCase(fileExt)
   newFilePath = dirName & "\" & newFileName & "." & newFileExt

   If fileName <> newFileName Then
       
       If Not oFSO.FileExists(newFilePath & ".tmp") Then
           oFile.Name = fileName    & "." & fileExt & ".tmp"
           oFile.Name = newFileName & "." & newFileExt

       Else
           Call MsgBox("File already exist: " & _
                   vbNewLine & _
                   "'" & newFilePath & ".tmp" & "'", _
                   16, "File Renamer")
       
       End If

   End If
       
Next


Saludos








guillehampp

Muchas Gracias por los Ejemplos, y la explicacion.

Flamer

#3
Código (vb) [Seleccionar]

Set objfso = CreateObject("scripting.filesystemobject")
Set folder = objfso.getfolder("D:\Pelis\")
Dim myname
For Each archivos In folder.Files
   archivos.name = UCase(archivos.name)
Next


saludos flamer y dime si te funciona