[VBS] Suppression de fichiers dans dossiers
JFO
-
max -
max -
Voila je débute en VBS et j'ai un petit problème à résoudre.
Imaginons une arborenscence telle que :
[b]RACINE[/b]
|
|__[b]Dossier 1[/b]__[b]Dossier 1.1[/b]__[i]Fichier.exe[/i]
| |
| |__[b]Dossier 1.2[/b]__[i]Fichier.bat[/i]
| | |
| | |__[i]Fichier.msi[/i]
| |
| |__[i]Fichier.exe [/i]
|
|__[b]Dossier 2[/b]__[b]Dossier 2.1[/b]__[i]Fichier.exe[/i]
| |
| |__[i]Fichier.bat[/i]
| |
| |__[i]Fichier.exe [/i]
|
|__[b]Dossier 3[/b]__[b]Dossier 3.1[/b]__[i]Fichier.bat[/i]
| |
| |__[b]Dossier 3.2[/b]__[i]Fichier.exe[/i]
| |
| |__[i]Fichier.msi[/i]
|___________________________________________________
Ce que je dois faire c'est, avec l'aide d'un script, supprimer tous les "Fichier.exe". Mais pour cela je dois parcourir les dossiers, ainsi que leur sous dossiers, puis les sous dossiers des sous dossiers et ainsi de suite.
J'ai trouvé quelques lignes de codes :
[color=green]Dim ObjShell, Afile, Thefiles
The = "C:\Temp\racine"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set Afolder=FSO.GetFolder(The)
Set TheFiles = Afolder.Files
On Error Resume Next
For Each AFile In TheFiles
Wscript.Echo FSO.GetExtensionName(AFile.Path)
If UCase(FSO.GetExtensionName(AFile.Path)) = "EXE" then
AFile.Delete
End if[/color]
Et des informations : [url]http://www.bellamyjc.net/fr/vbsobjets.html[/url]
Mais je n'ai pas trop d'idée pour réaliser ce script, je pense qu'il faut utiliser des boucles. Je ne sais pas non plus comment il gère la vérification de l'existence d'un dossier afin de reprende sa recherche dans le dossier parent.
Voila j'ai un peu de mal et si quelqu'un peut m'aider je le remercis de tout coeur.
A bientôt
Imaginons une arborenscence telle que :
[b]RACINE[/b]
|
|__[b]Dossier 1[/b]__[b]Dossier 1.1[/b]__[i]Fichier.exe[/i]
| |
| |__[b]Dossier 1.2[/b]__[i]Fichier.bat[/i]
| | |
| | |__[i]Fichier.msi[/i]
| |
| |__[i]Fichier.exe [/i]
|
|__[b]Dossier 2[/b]__[b]Dossier 2.1[/b]__[i]Fichier.exe[/i]
| |
| |__[i]Fichier.bat[/i]
| |
| |__[i]Fichier.exe [/i]
|
|__[b]Dossier 3[/b]__[b]Dossier 3.1[/b]__[i]Fichier.bat[/i]
| |
| |__[b]Dossier 3.2[/b]__[i]Fichier.exe[/i]
| |
| |__[i]Fichier.msi[/i]
|___________________________________________________
Ce que je dois faire c'est, avec l'aide d'un script, supprimer tous les "Fichier.exe". Mais pour cela je dois parcourir les dossiers, ainsi que leur sous dossiers, puis les sous dossiers des sous dossiers et ainsi de suite.
J'ai trouvé quelques lignes de codes :
[color=green]Dim ObjShell, Afile, Thefiles
The = "C:\Temp\racine"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set Afolder=FSO.GetFolder(The)
Set TheFiles = Afolder.Files
On Error Resume Next
For Each AFile In TheFiles
Wscript.Echo FSO.GetExtensionName(AFile.Path)
If UCase(FSO.GetExtensionName(AFile.Path)) = "EXE" then
AFile.Delete
End if[/color]
Et des informations : [url]http://www.bellamyjc.net/fr/vbsobjets.html[/url]
Mais je n'ai pas trop d'idée pour réaliser ce script, je pense qu'il faut utiliser des boucles. Je ne sais pas non plus comment il gère la vérification de l'existence d'un dossier afin de reprende sa recherche dans le dossier parent.
Voila j'ai un peu de mal et si quelqu'un peut m'aider je le remercis de tout coeur.
A bientôt
A voir également:
- [VBS] Suppression de fichiers dans dossiers
- Forcer suppression fichier - Guide
- Vbs windows - Accueil - Optimisation
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
3 réponses
La solution à ton problème consiste en un parcours récursif (fonction qui s'appele elle même) des dossiers et sous dossiers :
'------------------------------------------------------------------------------------------------------------------------
racine= "C:\Temp\racine"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set Afolder=FSO.GetFolder(racine)
effaceExe(Afolder)
function effaceExe(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "EXE" then AFile.Delete
next
for each subFolder in rep.SubFolders
effaceExe (subFolder)
next
end function
'------------------------------------------------------------------------------------------------------------------------
Cordialement.
'------------------------------------------------------------------------------------------------------------------------
racine= "C:\Temp\racine"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set Afolder=FSO.GetFolder(racine)
effaceExe(Afolder)
function effaceExe(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "EXE" then AFile.Delete
next
for each subFolder in rep.SubFolders
effaceExe (subFolder)
next
end function
'------------------------------------------------------------------------------------------------------------------------
Cordialement.
J'essaye d'adapter ce script pour qu'il cherche dans les dossier et sous dossier la présence d'un fichier et si oui déplacer ce fichier dans un nouveau dossier.
Pourrait tu m'aider ^^ ?