Script VBS de tronquage recursif de nom de fichier ou de rep
the_nail
Messages postés1Date d'inscriptionjeudi 13 mai 2004StatutMembreDernière intervention10 juin 2004
-
10 juin 2004 à 19:40
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009
-
11 juin 2004 à 14:01
Bonjour,
je souhaite ecrire un script WSH/VBS qui tronque tous les noms fichiers/repertoires/sous-fichiers/sous-repertoires dont la longueur est > 16 caracteres (le nb max de caractere doit etre 16).
Voila le code qua j'ai commencer à ecrire :
Option Explicit
Dim RootPath
while RootPath = ""
RootPath = InputBox ("Chemin du répertoire à traiter ? : ")
wend
Dim SelectedFiles
Set SelectedFiles = CreateObject("Scripting.Dictionary")
Dim SelectedFolders
Set SelectedFolders = CreateObject("Scripting.Dictionary")
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim RootFolder
Set RootFolder = fso.GetFolder(RootPath)
Dim FicLog
Set FicLog = fso.CreateTextFile(".\truncate_log.txt")
Call SearchFolders(RootFolder)
WScript.Echo SelectedFiles.Count & " fichiers trop longs (> 16
caracteres)..."
WScript.Echo SelectedFolders.Count & " répertoires trop longs (> 16
caracteres)..."
WScript.Echo "Traitement terminé!"
WScript.Quit
Sub SelectFile(ArgFile)
If Len(ArgFile.name) > 16 Then
Set SelectedFiles(ArgFile.Path) = ArgFile
Call TruncName(ArgFile)
End If
End Sub
Sub SelectFolder(ArgFolder)
If Len(ArgFolder.Name) > 16 Then
Set SelectedFolders(ArgFolder.Path) = ArgFolder
Call TruncName(ArgFolder)
End If
End Sub
Sub SearchFolders(ArgFolder)
Dim file, subfolder
For Each file In ArgFolder.Files
Call SelectFile(file)
Next
For Each subfolder In ArgFolder.SubFolders
Call SelectFolder(subfolder)
Call SearchFolders(subfolder)
Next
End Sub
sub TruncName(Obj)
dim NewChain
dim OldChain
OldChain = Obj.Name
NewChain = left(OldChain,16)
'FicLog.WriteLine Obj.name
Obj.Name = replace(OldChain,OldChain,Newchain)
end sub
Ca ca marche....
Mais il faudrai que le script memorise dans un fichier log toutes les modifications faites sur les noms de fichiers ou repertoires (ancien nom, nouveau nom) dans le but de permettre l'execution d'un traitement inverse qui restaurerai les anciens noms correctement (> 16 caracteres)
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 11 juin 2004 à 14:01
Salut !
Je pense qu'il suffit de rajouter quelques lignes dans la fonction TruncName : Avant de tronquer tu inscrit dans ton fichier l'ancien nom et le nouveau. Si tu veut aussi le nom des autres fichiers qui n'ont pas été tronqués, tu inscrit leur noms a chaque fois que tu en trouves un et qu'il ne faut pas le tronquer.
Tu peut eventuellement mettre des caractrères spéciaux dans ce fichier afin de différencier et les fichiers tronqués et leurs nom d'origine et les fichiers non tronqués.
Pour le code je ne peut pas t'aider car je suis nul en VBS, désolé !