Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: guillehampp en 28 Enero 2015, 15:11 PM

Título: Ayuda renombrar archivos con VBScript
Publicado por: guillehampp en 28 Enero 2015, 15:11 PM
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!
Título: Re: Ayuda renombrar archivos con VBScript
Publicado por: Eleкtro en 28 Enero 2015, 16:17 PM
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
Título: Re: Ayuda renombrar archivos con VBScript
Publicado por: guillehampp en 28 Enero 2015, 16:42 PM
Muchas Gracias por los Ejemplos, y la explicacion.
Título: Re: Ayuda renombrar archivos con VBScript
Publicado por: Flamer en 28 Enero 2015, 17:10 PM
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