VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 mai 2009
-
17 avril 2009 à 08:45
VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 mai 2009
-
17 avril 2009 à 10:05
Bonjour, j'aurai aimé savoir si il est possible de supprimer tous les espaces du nom d'un répertoire, ses fichier, de ses sous-répertoires et leurs fichiers, avec un petit programme VBasic, sans détériorer les fichiers ni les déplacer.
MerZi ... Zi ... Zi ... PtitCat
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 17 avril 2009 à 09:15
Bonjour,
Pour ce qui est de la modification du nom : ===>> instruction Name de vb !
Pour ce qui est du parcours de tous le répertoire et de "l'inventaire" des fichiers à traiter : ===>>> sujet plus que récurrent + sources présents sur ce forum
Pour ce quiu est des conséquences éventuelles du renommage : les mêmes que si tu le faisais depuis l'explorateur (en fonction des fichiers concernés et de leur utilité). Et de celà, VB n'a pas à s'en mêler (tu es le seul à savoir ce que tu fais).
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 17 avril 2009 à 09:19
Bah oui, c'est possible.
Il te suffit d'énumérer les fichiers d'un répertoire récursivement, de faire systématiquement un Replace(FN," ","") sur le nom du fichier et de le renommer !
Option Explicit
Private Const MAX_PATH As Long = 260
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10
Private Type T_SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Type T_FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type T_WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As T_FILETIME
ftLastAccessTime As T_FILETIME
ftLastWriteTime As T_FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" (ByVal lpFileName As String, ByRef lpFindFileData As T_WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" (ByVal hFindFile As Long, ByRef lpFindFileData As T_WIN32_FIND_DATA) As Long
Private Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (ByRef Destination As Any, ByVal Length As Long)
Public Sub ListFiles(Path As String, Filter As String, Optional Recursive As Boolean = False)
Dim hFiles As Long
Dim FD As T_WIN32_FIND_DATA, FN As String
Dim FileName As String
If Right(Path, 1) <> "\" And Right(Path, 1) <> "/" Then Path = Path & "\"
hFiles = FindFirstFile(Path & Filter, FD)
If hFiles = -1 Then Exit Sub
Do
FN = Left(FD.cFileName, InStr(1, FD.cFileName, Chr(0)) - 1)
If FN <> "." And FN <> ".." And FN <> vbNullString Then
If FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY Then
If Recursive Then
Handler 2, Path & FN
ListFiles Path & FN, Filter, True
End If
Else
Handler 1, Path & FN
End If
End If
Loop While FindNextFile(hFiles, FD) <> 0
CloseHandle hFiles
End Sub
Private Sub Handler(Msg As Integer, Optional FileName As String = "")
Select Case Msg
Case 1
'New listed file
DoEvents
Case 2
'Entering in directory
DoEvents 'Do nothing
End Select
End Sub
, ----
[../code.aspx?ID=41455 Syntax color by Renfield]
Tu n'as plus qu'à modifier la sub Handler dans le 1er cas : faire un InStr et renommer.
VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 mai 2009 17 avril 2009 à 10:05
Merci beaucoup pour ton aide.
jmf0 => je sais que j'ai toutes les informations qu'il me faut pour trouver une solution sont trouvable sur le site, mais je voulais juste vérifier qu'il était aussi possible de modifier les nom d'un répertoire et ses sous-répertoir, c'est pour ça que je n'ai pas demandé de solution code.