Ajout de préfixes à plusieurs fichiers d'un dossier

0

J'ai trouvé un vbscript qui me permettra de mettre à jour les noms de fichiers pour remplacer "_" par un "" (espace) très utile. Mon espoir est de faire quelques petites modifications à ce même script pour ajouter un préfixe aux mêmes fichiers. Cependant, chaque tentative que j'ai faite dans ce sens ne fait que me coincer dans une boucle sans fin qui expire et qui ajoute plus ou moins une quantité infinie de préfixes. Je ne peux pas déterminer les conditions correctes pour sortir de la boucle après une exécution sur chaque fichier. Ci-dessous le script. Toute aide est appréciée.

Set objFSO = CreateObject("Scripting.FileSystemObject")   
Set Folder = objFSO.GetFolder("C:test")

For Each File In Folder.Files  
    sNewFile = File.Name  
    sNewFile = Replace(sNewFile, "_", "")  
    If (sNewFile <> File.Name) Then  
        File.Move (File.ParentFolder + "\" + sNewFile)  
    End If

Next
Ben Schulte
la source

Réponses:

1

Que diriez-vous:

dim objFSO    : set objFSO = CreateObject("Scripting.FileSystemObject")
dim objFolder : Set objFolder = objFSO.GetFolder(".")
For Each File In objFolder.Files
    if instr(File.Name, "_") > 0  then
      objFSO.MoveFile File.Name, "PREFIX-" & replace(File.Name, "_", " ") 
    end if
Next

Pour chaque fichier du même répertoire que le script, il vérifiera si le nom du fichier comporte un trait de soulignement: Si tel est le cas, il renommera ce fichier avec une chaîne "PREFIX-" et remplacera le trait de soulignement par un espace.

Il peut être intéressant de commenter la ligne MoveFile et de créer une nouvelle ligne avec:

wscript.echo "Renaming: " & File.Name & " to: PREFIX-" & replace(File.Name, "_", " ") 

Par exemple

dim objFSO    : set objFSO = CreateObject("Scripting.FileSystemObject")
dim objFolder : Set objFolder = objFSO.GetFolder(".")
For Each File In objFolder.Files
    if instr(File.Name, "_") > 0  then
      'objFSO.MoveFile File.Name, "PREFIX-" & replace(File.Name, "_", " ") 
      wscript.echo "Renaming: " & File.Name & " to: PREFIX-" & replace(File.Name, "_", " ") 
    end if
Next

Cela vous montrera ce qu’il fera si vous exécutez:
cscript script.vbs> out.txt

Coup de main
la source