Foro de elhacker.net

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

Código:
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
  1. Option Explicit
  2.  
  3. Dim oFSO, oDir, oFile, _
  4.    filePath, dirName, fileName, fileExt, _
  5.    newFileName, newFileExt
  6.  
  7. Set oFSO    = CreateObject("scripting.filesystemobject")
  8. Set oDir    = oFSO.getfolder("D:\Pelis\")
  9.  
  10. For Each oFile In oDir.Files
  11.  
  12.    filePath    = oFSO.GetAbsolutePathName(oFile)
  13.    dirName     = oFSO.GetParentFolderName(oFile)
  14.    fileName    = oFSO.GetBaseName(oFile)
  15.    fileExt     = oFSO.GetExtensionName(oFile)
  16.  
  17.    newFileName = UCase(fileName)
  18.    newFileExt  = LCase(fileExt)
  19.  
  20.    If (fileName & "." & fileExt) <> (newFileName & "." & newFileExt) Then
  21.        Call oFSO.MoveFile(filePath, dirName & "\" & newFileName & "." & newFileExt)
  22.    End If
  23.  
  24. Next

Renombrar:
Código
  1. Option Explicit
  2.  
  3. Dim oFSO, oDir, oFile, _
  4.    filePath, dirName, fileName, fileExt, _
  5.    newFileName, newFileExt, newFilePath
  6.  
  7. Set oFSO    = CreateObject("scripting.filesystemobject")
  8. Set oDir    = oFSO.getfolder("D:\Pelis\")
  9.  
  10. For Each oFile In oDir.Files
  11.  
  12.    filePath    = oFSO.GetAbsolutePathName(oFile)
  13.    dirName     = oFSO.GetParentFolderName(oFile)
  14.    fileName    = oFSO.GetBaseName(oFile)
  15.    fileExt     = oFSO.GetExtensionName(oFile)
  16.  
  17.    newFileName = UCase(fileName)
  18.    newFileExt  = UCase(fileExt)
  19.    newFilePath = dirName & "\" & newFileName & "." & newFileExt
  20.  
  21.    If fileName <> newFileName Then
  22.  
  23.        If Not oFSO.FileExists(newFilePath & ".tmp") Then
  24.            oFile.Name = fileName    & "." & fileExt & ".tmp"
  25.            oFile.Name = newFileName & "." & newFileExt
  26.  
  27.        Else
  28.            Call MsgBox("File already exist: " & _
  29.                    vbNewLine & _
  30.                    "'" & newFilePath & ".tmp" & "'", _
  31.                    16, "File Renamer")
  32.  
  33.        End If
  34.  
  35.    End If
  36.  
  37. 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
  1. Set objfso = CreateObject("scripting.filesystemobject")
  2. Set folder = objfso.getfolder("D:\Pelis\")
  3. Dim myname
  4. For Each archivos In folder.Files
  5.    archivos.name = UCase(archivos.name)
  6. Next
  7.  

saludos flamer y dime si te funciona