2013-02-26 2 views
2

Je suis amateur à VBScript (et tout à fait fasciné par la façon dont cela fonctionne;)). Je dois travailler quotidiennement sur certains rapports pour lesquels j'ai généré un script pour faire la tâche. Le problème est que j'ai généré ce script pour un nom de fichier particulier et que ces rapports viennent tous les jours avec le timedate et quelques paramètres supplémentaires qui leur sont ajoutés dans le nom. Donc, j'ai besoin d'un vbscript pour enregistrer mes 10 minutes de travail quotidien de renommer les fichiers en fonction du nom spécifié dans le script.Rechercher un fichier ayant une chaîne particulière dans son nom et le renommer

Par exemple. D:/reports/ avoir fichier AMR KilobyteData_23022013_4399_223.xls Je veux le renommer en AMR KilobyteData.xls. C'est tout ! :)

S'il vous plaît aidez-moi la question :)

Répondre

2

Première itérer à travers tous les fichiers de votre dossier à l'aide d'un script comme celui-ci:

Dim fso, folder, file 
Dim folderName, searchFileName, renameFileTo 

' Parameters 
folderName  = "D:\reports\" 
searchFileName = "AMR KilobyteData" 
renameFileTo = "AMR KilobyteData.xls" 

' Create filesystem object and the folder object 
' how the FSO works: http://msdn.microsoft.com/en-us/library/2z9ffy99(v=vs.84).aspx 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folderName) 

' Loop over all files in the folder until the searchFileName is found 
For each file In folder.Files  
    ' See if the file starts with the name we search 
    ' how instr works: http://www.w3schools.com/vbscript/func_instr.asp 
    If instr(file.name, searchFileName) = 1 Then 
     file.name = renameFileTo 
     ' Exit the loop, we only want to rename one file 
     Exit For 
    End If 
Next 

Il devrait fonctionner correctement (mais je ne l'ai pas le tester). J'espère avoir déclenché votre curiosité et vous étudierez les mécanismes de fonctionnement de ce code. C'est pourquoi j'ai mis dans les liens où la documentation peut être trouvée.

+0

bon travail :) Merci :) En fait, je regardais en mécanique du code et essayé de le rendre plus dynamique. Lorsque j'ai essayé de le faire en utilisant la variable 2D Array, j'ai échoué. Dunno pourquoi. 'Dim SearchFileName (4,2) SearchFileName (0,0) =" Autorisé KilobyteData "' –

+0

Problème résolu :) –

1

Est-ce que les informations que vous souhaitez supprimer viennent toujours après le premier caractère de soulignement dans le nom de fichier? Si oui, vous pourriez faire quelque chose comme ceci:

Set fso = CreateObject("Scripting.FileSystemObject") 

For Each f In fso.GetFolder("D:\reports").Files 
    pos = InStr(f.Name, "_") 
    If pos > 0 Then 
    newName = Left(f.Name, pos-1) & "." & fso.GetExtensionName(f.Name) 
    f.Move fso.BuildPath(f.ParentFolder, newName) 
    End If 
Next 
Questions connexes