OVH Cloud OVH Cloud

VBS : Search and Delete (Cherche et effacer)

5 réponses
Avatar
EBE
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je pourrais
utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom complet)
- si possible, encore mieux, pouvoir spécifier plusieurs fichiers à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher soit
entré via un argument (cscipt searchDelete.vbs <argument(s)>)

Dans les petits plus

- logs des fichiers supprimés...

Voilà, je ne suis pas experimenté en script VBS, et je patauge un peu. Pour
être plus claire,
je cherche surtout à faire des recherches dans "%systemdrive%\document and
settings\"

Voilà, si klk un arrive à prendre 2 minutes pour m'aider, serait très
apprécié.

Merci


Conrad

5 réponses

Avatar
EBE
Ok, j'y arrive enfin (merci les scripts dispo un peu partout :-)
Maintenant j'aimerai juste remplacer:

'--Set folder

sPath = "c:documents and settings"

Par quelque chose de plus dynamique (%systemdrive%documents and settings%)
Je pense que je vais trouver ca avec l'objet SpecialFolders ?

MErci



'--Drop a folder on this script or run it and enter a folder Path.
'-- The script will find all files with a given name in that folder
'--or subfolders. When done it shows a message box listing all files found
'-- and their full paths.


Dim FSO, sFil, arg, s, sPath
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next

'--Set folder

sPath = "c:documents and settings"

If sPath = "" or FSO.FolderExists(sPath) = False Then
MsgBox "Not a valid folder Path.", 64
WScript.Quit
End If

'--Get filename to search For:

If WScript.Arguments.count > 0 Then
sFil = WScript.Arguments.item(0)
Else
sFil = InputBox("Enter file name for search.", "Find File")
End If
If sFil = "" Then WScript.Quit

'--Call the Function to Do search:

s = DoSearch(sPath, sFil)
If s <> "" Then
MsgBox "Files found:" & vbcrlf & s
Else
MsgBox sFil & " not found in " & sPath & " or its subfolders."
End If


'--///////////////////////////////////////////////////
'-- This Function searches the files in FolPath For a match with FilName.
'-- It Then calls itself For Each subfolder found.
'-- This can work because Each instance of the Function is a separate
'-- operation that just happens to be called from within the Function.
'-- That is, the variables Fol, SubPath, etc. are separate variables in
'-- Each instance of the Function.


Function DoSearch(FolPath, FilName)
Dim SubPath, Fol, s1, sList, oFol, Fils, oFil, s, sPath, Fols
Set oFol = FSO.GetFolder(FolPath)
Set Fils = oFol.Files
If Fils.count > 0 Then
For Each oFil in Fils
If FilName = oFil.name Then
sList = sList & oFil.Path & vbcrlf
End If
Next
End If

Set Fols = oFol.SubFolders
If Fols.count > 0 Then
For Each Fol in Fols
SubPath = Fol.Path
s1 = dosearch(SubPath, FilName)
If s1 <> "" Then
sList = sList & s1
End If
Next
End If
Set Fols = Nothing

Set Fils = Nothing
Set oFol = Nothing

DoSearch = sList
End Function
"EBE" wrote in message
news:
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je pourrais
utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom complet)
- si possible, encore mieux, pouvoir spécifier plusieurs fichiers à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher soit
entré via un argument (cscipt searchDelete.vbs <argument(s)>)

Dans les petits plus

- logs des fichiers supprimés...

Voilà, je ne suis pas experimenté en script VBS, et je patauge un peu.
Pour être plus claire,
je cherche surtout à faire des recherches dans "%systemdrive%document and
settings"

Voilà, si klk un arrive à prendre 2 minutes pour m'aider, serait très
apprécié.

Merci


Conrad



Avatar
Georges MAUREL
Bonsoir,
Pour récupérer la valeur d'une variable d'environnement il faut utiliser la
méthode ExpandEnvironmentString de l'objet shell

Cordialement
Georges


"EBE" a écrit dans le message de news:


Ok, j'y arrive enfin (merci les scripts dispo un peu partout :-)
Maintenant j'aimerai juste remplacer:

'--Set folder

sPath = "c:documents and settings"

Par quelque chose de plus dynamique (%systemdrive%documents and
settings%)
Je pense que je vais trouver ca avec l'objet SpecialFolders ?

MErci



'--Drop a folder on this script or run it and enter a folder Path.
'-- The script will find all files with a given name in that folder
'--or subfolders. When done it shows a message box listing all files found
'-- and their full paths.


Dim FSO, sFil, arg, s, sPath
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next

'--Set folder

sPath = "c:documents and settings"

If sPath = "" or FSO.FolderExists(sPath) = False Then
MsgBox "Not a valid folder Path.", 64
WScript.Quit
End If

'--Get filename to search For:

If WScript.Arguments.count > 0 Then
sFil = WScript.Arguments.item(0)
Else
sFil = InputBox("Enter file name for search.", "Find File")
End If
If sFil = "" Then WScript.Quit

'--Call the Function to Do search:

s = DoSearch(sPath, sFil)
If s <> "" Then
MsgBox "Files found:" & vbcrlf & s
Else
MsgBox sFil & " not found in " & sPath & " or its subfolders."
End If


'--///////////////////////////////////////////////////
'-- This Function searches the files in FolPath For a match with FilName.
'-- It Then calls itself For Each subfolder found.
'-- This can work because Each instance of the Function is a separate
'-- operation that just happens to be called from within the Function.
'-- That is, the variables Fol, SubPath, etc. are separate variables in
'-- Each instance of the Function.


Function DoSearch(FolPath, FilName)
Dim SubPath, Fol, s1, sList, oFol, Fils, oFil, s, sPath, Fols
Set oFol = FSO.GetFolder(FolPath)
Set Fils = oFol.Files
If Fils.count > 0 Then
For Each oFil in Fils
If FilName = oFil.name Then
sList = sList & oFil.Path & vbcrlf
End If
Next
End If

Set Fols = oFol.SubFolders
If Fols.count > 0 Then
For Each Fol in Fols
SubPath = Fol.Path
s1 = dosearch(SubPath, FilName)
If s1 <> "" Then
sList = sList & s1
End If
Next
End If
Set Fols = Nothing

Set Fils = Nothing
Set oFol = Nothing

DoSearch = sList
End Function
"EBE" wrote in message
news:
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je
pourrais utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom complet)
- si possible, encore mieux, pouvoir spécifier plusieurs fichiers à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher
soit entré via un argument (cscipt searchDelete.vbs <argument(s)>)

Dans les petits plus

- logs des fichiers supprimés...

Voilà, je ne suis pas experimenté en script VBS, et je patauge un peu.
Pour être plus claire,
je cherche surtout à faire des recherches dans "%systemdrive%document
and settings"

Voilà, si klk un arrive à prendre 2 minutes pour m'aider, serait très
apprécié.

Merci


Conrad







Avatar
Jean-Claude BELLAMY
Dans le message :,
EBE a pris la peine d'écrire ce qui suit :
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je
pourrais utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom
complet) - si possible, encore mieux, pouvoir spécifier plusieurs fichiers
à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher
soit entré via un argument (cscipt searchDelete.vbs <argument(s)>)
[...]


En ce qui concerne la recherche et remplacement dans un ensemble de
fichiers, tu peux t'inspirer de mon script REPLACE.VBS
http://www.bellamyjc.org/fr/vbsdownload.html#replace

Il fait appel aux expressions régulières, gère les "wildcards" dans les noms
de fichiers, est récursif, ...


I:VBS>replace /?
Script de remplacement d'une chaine de caractères
dans un ensemble de fichiers texte
JC BELLAMY © 2002
------------------------------------------
Syntaxe :
replace -a<ancienne> -n<nouvelle> -f<fichier> [-b<backup>] [-s]
replace /a<ancienne> /n<nouvelle> /f<fichier> [/b<backup>] [/s]
Paramètres obligatoires :
<ancienne> : chaine à remplacer
<nouvelle> : nouvelle chaine
<fichier> : nom du fichier, avec ou sans chemin
peut comporter les caractères génériques * et ?
On peut remplacer un caractère dans les chaines par sa valeur
hexadécimale sous la forme xnn
Par exemple le guillemet " : x22
Paramètres facultatifs :
<backup>: : extension des fichiers de sauvegarde (par défaut ".bak")
(le "." initial est facultatif)
si ce commutateur est omis, il n'y a pas de backup
-c : remplacements sensibles à la casse
dans ce cas, on distingue majuscules et minuscules
-s : exploration des sous-dossiers requise
-r : les chaines sont interprétées comme expressions régulières
NB : les chaines et nom de fichier sont à encadrer par des guillemets
s'ils comportent des espaces

Exemples :
replace /aEssai /nx22Testx22 -flisezmoi.txt -c -s -b$$$
remplace la chaine "Essai" par ""Test"" en respectant la casse
dans tous les fichiers de nom "lisezmoi.txt" situés dans le
dossier courant et les sous-dossiers et effectue un backup de
chaque fichier modifié en ajoutant à son nom l'extension .$$$

replace -a"array[0..255] of char" -nstring -f"g:mes projetsdelphi*.pas"
remplace la chaine "array[0..255] of char" par "string"
dans tous les fichiers "*.pas" du dossier "g:mes projetsdelphi"

replace -a"(S+)(s+)(S+)(s+)(S+)(s+)(S+)(s+)(S+)(s+)(S+)"
-n"$1$2$11$6$7$8$9$10$3$4$5" -fm:textesignature.txt -r
permute les mots 11 et 3,4,5 (en tenant compte des espaces)
Ainsi le texte : "May The Force be with You"
devient : "May You be with The Force"

Un aide-mémoire des expressions régulières est disponible p.ex. ici :
http://www.bellamyjc.org/fr/vbsobj/vspropattern.html

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
EBE
Bonjour Jean-Claude,

Je regarde ca de suite ! Merci d'avance.

Cordialement

Conrad


"Jean-Claude BELLAMY" wrote in message
news:%
Dans le message :,
EBE a pris la peine d'écrire ce qui suit :
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je
pourrais utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom
complet) - si possible, encore mieux, pouvoir spécifier plusieurs
fichiers à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher
soit entré via un argument (cscipt searchDelete.vbs <argument(s)>)
[...]


En ce qui concerne la recherche et remplacement dans un ensemble de
fichiers, tu peux t'inspirer de mon script REPLACE.VBS
http://www.bellamyjc.org/fr/vbsdownload.html#replace

Il fait appel aux expressions régulières, gère les "wildcards" dans les
noms de fichiers, est récursif, ...


I:VBS>replace /?
Script de remplacement d'une chaine de caractères
dans un ensemble de fichiers texte
JC BELLAMY © 2002
------------------------------------------
Syntaxe :
replace -a<ancienne> -n<nouvelle> -f<fichier> [-b<backup>] [-s]
replace /a<ancienne> /n<nouvelle> /f<fichier> [/b<backup>] [/s]
Paramètres obligatoires :
<ancienne> : chaine à remplacer
<nouvelle> : nouvelle chaine
<fichier> : nom du fichier, avec ou sans chemin
peut comporter les caractères génériques * et ?
On peut remplacer un caractère dans les chaines par sa valeur
hexadécimale sous la forme xnn
Par exemple le guillemet " : x22
Paramètres facultatifs :
<backup>: : extension des fichiers de sauvegarde (par défaut ".bak")
(le "." initial est facultatif)
si ce commutateur est omis, il n'y a pas de backup
-c : remplacements sensibles à la casse
dans ce cas, on distingue majuscules et minuscules
-s : exploration des sous-dossiers requise
-r : les chaines sont interprétées comme expressions
régulières
NB : les chaines et nom de fichier sont à encadrer par des guillemets
s'ils comportent des espaces

Exemples :
replace /aEssai /nx22Testx22 -flisezmoi.txt -c -s -b$$$
remplace la chaine "Essai" par ""Test"" en respectant la casse
dans tous les fichiers de nom "lisezmoi.txt" situés dans le
dossier courant et les sous-dossiers et effectue un backup de
chaque fichier modifié en ajoutant à son nom l'extension .$$$

replace -a"array[0..255] of char" -nstring -f"g:mes projetsdelphi*.pas"
remplace la chaine "array[0..255] of char" par "string"
dans tous les fichiers "*.pas" du dossier "g:mes projetsdelphi"

replace -a"(S+)(s+)(S+)(s+)(S+)(s+)(S+)(s+)(S+)(s+)(S+)"
-n"$1$2$11$6$7$8$9$10$3$4$5" -fm:textesignature.txt -r
permute les mots 11 et 3,4,5 (en tenant compte des espaces)
Ainsi le texte : "May The Force be with You"
devient : "May You be with The Force"

Un aide-mémoire des expressions régulières est disponible p.ex. ici :
http://www.bellamyjc.org/fr/vbsobj/vspropattern.html

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr





Avatar
EBE
Bonjour Georges,

Merci pour cette info, je vais prendre connaissance de cet méthode.

Merci

Conrad


"Georges MAUREL" <georges.maurel_at_free.fr> wrote in message
news:e1s8R$
Bonsoir,
Pour récupérer la valeur d'une variable d'environnement il faut utiliser
la méthode ExpandEnvironmentString de l'objet shell

Cordialement
Georges


"EBE" a écrit dans le message de news:


Ok, j'y arrive enfin (merci les scripts dispo un peu partout :-)
Maintenant j'aimerai juste remplacer:

'--Set folder

sPath = "c:documents and settings"

Par quelque chose de plus dynamique (%systemdrive%documents and
settings%)
Je pense que je vais trouver ca avec l'objet SpecialFolders ?

MErci



'--Drop a folder on this script or run it and enter a folder Path.
'-- The script will find all files with a given name in that folder
'--or subfolders. When done it shows a message box listing all files
found
'-- and their full paths.


Dim FSO, sFil, arg, s, sPath
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next

'--Set folder

sPath = "c:documents and settings"

If sPath = "" or FSO.FolderExists(sPath) = False Then
MsgBox "Not a valid folder Path.", 64
WScript.Quit
End If

'--Get filename to search For:

If WScript.Arguments.count > 0 Then
sFil = WScript.Arguments.item(0)
Else
sFil = InputBox("Enter file name for search.", "Find File")
End If
If sFil = "" Then WScript.Quit

'--Call the Function to Do search:

s = DoSearch(sPath, sFil)
If s <> "" Then
MsgBox "Files found:" & vbcrlf & s
Else
MsgBox sFil & " not found in " & sPath & " or its subfolders."
End If


'--///////////////////////////////////////////////////
'-- This Function searches the files in FolPath For a match with FilName.
'-- It Then calls itself For Each subfolder found.
'-- This can work because Each instance of the Function is a separate
'-- operation that just happens to be called from within the Function.
'-- That is, the variables Fol, SubPath, etc. are separate variables in
'-- Each instance of the Function.


Function DoSearch(FolPath, FilName)
Dim SubPath, Fol, s1, sList, oFol, Fils, oFil, s, sPath, Fols
Set oFol = FSO.GetFolder(FolPath)
Set Fils = oFol.Files
If Fils.count > 0 Then
For Each oFil in Fils
If FilName = oFil.name Then
sList = sList & oFil.Path & vbcrlf
End If
Next
End If

Set Fols = oFol.SubFolders
If Fols.count > 0 Then
For Each Fol in Fols
SubPath = Fol.Path
s1 = dosearch(SubPath, FilName)
If s1 <> "" Then
sList = sList & s1
End If
Next
End If
Set Fols = Nothing

Set Fils = Nothing
Set oFol = Nothing

DoSearch = sList
End Function
"EBE" wrote in message
news:
Bonjout à tous,

Est-ce que klk un aurait un ou des exemples sous la mains, que je
pourrais utiliser pour "monter" un script VBS qui fasse :

- Search Files
- Delete Files

Je souhaiterait pouvoir spécifer

- le(s) repertoire(s) racine des recherches (recursives)
- Le nom du fichiers à rechercher et supprimer (wildcard ou nom complet)
- si possible, encore mieux, pouvoir spécifier plusieurs fichiers à
rechercher
- et enfin.. si possible toujours, que le(s) fichiers(s) à rechercher
soit entré via un argument (cscipt searchDelete.vbs <argument(s)>)

Dans les petits plus

- logs des fichiers supprimés...

Voilà, je ne suis pas experimenté en script VBS, et je patauge un peu.
Pour être plus claire,
je cherche surtout à faire des recherches dans "%systemdrive%document
and settings"

Voilà, si klk un arrive à prendre 2 minutes pour m'aider, serait très
apprécié.

Merci


Conrad