REM ============================== REM Fichier : search_replace_text_in_a_tree.vbs REM Desc : rechercher/remplacer du texste dans une série de fichiers d'une arborescence REM Auteur : X. Gangand REM Année : 2009 REM Version : 1.13 REM ============================== REM History 1.01 modifié les touches de raccourcis (pas de trait d'union, une seule lettre) REM History 1.02 ajout y et z pour ouvrir le dossier trouvé REM History 1.03 fonction historique REM History 1.04 ajout '| sort' à la commande dir (dir /on ne trie pas la globalité) REM History 1.05 xcd (Change Dir) et xff (Find File) abandonné, un seul fichier fusionné, XGO.VBS (il sera appelé depuis des fichiers .bat : x1=recherche dossiers+explorer.exe, x2=recherche fichier+explorer.exe, x1=recherche dossiers+cmd, x2=recherche fichier+cmd) REM History 1.10 un seul fichier fusionné, OPENDIR.VBS (appelé depuis le fichier od.bat), ajouté la vérification de l'existence du dossier/fichier avant lancement REM History 1.11 ajout "tentative de lancement du dossier parent" si fichier/dossier trouvé inexistant REM History 1.12 modification option l en ld, lf, ldf, lfd REM History 1.13 ajout procédure RelancerOpenDirAvecOption_x REM Projets : REM 1. modifier (peut-être) la mise à jour du catalogue REM non pas avec la fonction dir mais depuis .vbs directement (pb rapidité) REM Projets réalisés : REM 1. modifier la procédure de recherche pour trouver la plus rapide REM ReadAll ou parcours ligne par ligne ? REM résultats : stocker en tableau prend énormément de place mémoire => utiliser lecture directe depuis le fichier Option Explicit 'notes personnelles If WSHNetwork("computername") = "xavpc" Then Wscript.Echo _ "Voir http://xgangand.free.fr/myfiles/s/list_folders_recursively.zip" & vbcrlf & _ "pour s'affranchir du problème de la commande 'dir' et les accents." & vbcrlf & _ "" & vbcrlf & _ "Ajouter inputbox avec menu derniers historiques si ligne de commande vide." & vbcrlf & _ "" End If Const DebugON = FALSE 'mettre TRUE pour afficher les messages Const ForAppending = 8 Const TC = 1 'vbTextCompare = 1 Dim g_tArg, g_nbArgs, g_bTrouve, g_sAction, g_sHistoryFile Dim g_sCatalog, gCatFileDIR, gCatFileFILE gCatFileDIR = Script_ParentFolder & "opendir_folders.txt" gCatFileFILE = Script_ParentFolder & "opendir_files.txt" g_sHistoryFile = Script_ParentFolder & "opendir_history.txt" Dim oFSO, oDF, sLine 'oDF = oDataFile CommandLine Sub CommandLine REM =========================================== REM = Analyse ligne de commande REM =========================================== Set g_tArg = Wscript.Arguments g_nbArgs = g_tArg.Count If g_nbArgs = 0 Then Syntax Wscript.Quit(0) End If Select Case LCase(g_tArg(0)) Case "?" : Syntax Case "/?" : Syntax Case "-?" : Syntax Case "-help" : Syntax Case "--help" : Syntax Case "h" : History Case "ld" : Lister_1 "dir", "" Case "lf" : Lister_1 "file", "" Case "ldf" : Lister_1 "dirETfile", "" Case "lfd" : Lister_1 "fileETdir", "" Case "u" : Update_Catalogs Case "r" : Update_Catalogs Case "v" : View_Catalog Case "e" : ShellRun "cmd /c explorer " & Script_ParentFolder Case "c" : Search_1 "dir+file", "cmd" Case "s" : Search_1 "dir+file", "explorer" Case "x" : Search_1 "dir+file", "explorer" Case "y" : Search_1 "dir+file", "explorer /select" 'possiblité ouvrir dossier parent et sélectionner dossier trouvé Case "z" : Search_1 "dir+file", "explorer /root" 'possiblité ouvrir dossier en tant que racine (explorer /root, <dossier>) Case Else : RelancerOpenDirAvecOption_x End Select End Sub Sub AfficherRecherche(sLieu) REM =============================================== REM = Afficher pour info en attendant les résultats REM =============================================== Dim i, s For i = 1 To Wscript.Arguments.Count-1 s = s & " " & Wscript.Arguments(i) Next If DebugON = TRUE Then Wscript.Echo "Recherche de " & s & " dans " & sLieu End Sub Sub AppendToHistoryFile(s) REM ========================= REM = Enregistre la recherche REM ========================= Dim oFSOatfh, fAppend Set oFSOatfh = CreateObject("Scripting.FileSystemObject") Set fAppend = oFSOatfh.OpenTextFile(g_sHistoryFile, ForAppending, True) fAppend.WriteLine Now & " " & s Set oFSOatfh = Nothing End Sub Function DossiersPreScannes(t, sCatFile) REM =========================================== REM = Lister les dossiers des catalogues REM =========================================== Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FileExists(sCatFile) Then Dim f, sLine, n n = -1 Set f = oFSO.OpenTextFile(sCatFile) 'passer les lignes d'en-tête Do sLine = f.ReadLine Loop Until sLine = "REM * Dossiers scannés :" 'lire les dossiers déjà scannés Do sLine = f.ReadLine If sLine = "REM **************************************************" Then Exit Do n = n + 1 Redim Preserve t(n) t(n) = Right(sLine, Len(sLine) - Len("REM * - ")) Loop If n<>-1 Then Dim i For i = 0 To n DossiersPreScannes = DossiersPreScannes & " " & t(i) Next End If f.Close Set f = Nothing Set oFSO = Nothing Else DossiersPreScannes = "aucun" End If Set oFSO = Nothing End Function Function Folder_Exists(sFolder) REM =================================== REM = Vérifier l'existence d'un dossier REM =================================== Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FolderExists(sFolder)=TRUE Then Folder_Exists=TRUE Else Folder_Exists=FALSE Set oFSO = Nothing End Function Sub History REM ========= REM = History REM ========= ShellRun "cmd /c start " & g_sHistoryFile End Sub Sub Lister_1(sOrdre, sAction) REM ========================================= REM = Lister depuis catalogues DIR et/ou FILE REM ========================================= g_bTrouve = FALSE Select Case sOrdre Case "dir" : 'recherche seulement dans gCatFileDIR Lister_2 gCatFileDIR, sAction Case "file" : Lister_2 gCatFileFILE, sAction Case "dir+file" : 'LE PLUS IMPORTANT !!! 'recherche seulement dans DIR (gCatFileDIR) puis dans FILE si rien trouvé dans DIR Lister_2 gCatFileDIR, sAction If g_bTrouve=FALSE Then If DebugON = TRUE Then Wscript.Echo "" Lister_2 gCatFileFILE, sAction End If Case "file+dir" : 'recherche seulement dans FILE puis DIR si rien trouvé dans FILE Lister_2 gCatFileFILE, sAction If g_bTrouve=FALSE Then If DebugON = TRUE Then Wscript.Echo "" Lister_2 gCatFileDIR, sAction End If Case "fileETdir" : Lister_2 gCatFileFILE, sAction Lister_2 gCatFileDIR, sAction Case "dirETfile" : Lister_2 gCatFileDIR, sAction Lister_2 gCatFileFILE, sAction End Select End Sub Sub Lister_2(sCatalog, sAction) REM ============================== REM = Cherche un dossier et lister REM ============================== VerifierExistenceCatalogue sCatalog AfficherRecherche sCatalog Select Case g_nbArgs Case 2 : List_1_Param Slash(g_tArg(1)) Case 3 : List_2_Param Slash(g_tArg(1)), Slash(g_tArg(2)) Case 4 : List_3_Param Slash(g_tArg(1)), Slash(g_tArg(2)), Slash(g_tArg(3)) Case 5 : List_4_Param Slash(g_tArg(1)), Slash(g_tArg(2)), Slash(g_tArg(3)), Slash(g_tArg(4)) Case Else : Msgbox "Limitez votre recherche à 4 arguments." Wscript.Quit(0) End Select RechercheFinie sCatalog End Sub Sub List_1_Param(a1) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 Then g_bTrouve = TRUE: Wscript.Echo sLine 'g_nbTrouves = g_nbTrouves + 1 End If Loop Until oDF.AtEndOfStream End Sub Sub List_2_Param(a1,a2) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 Then g_bTrouve = TRUE: Wscript.Echo sLine 'g_nbTrouves = g_nbTrouves + 1 End If Loop Until oDF.AtEndOfStream End Sub Sub List_3_Param(a1,a2,a3) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 And _ Instr(1, sLine, a3, TC)>0 Then g_bTrouve = TRUE: Wscript.Echo sLine 'g_nbTrouves = g_nbTrouves + 1 End If Loop Until oDF.AtEndOfStream End Sub Sub List_4_Param(a1,a2,a3,a4) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 And _ Instr(1, sLine, a3, TC)>0 And _ Instr(1, sLine, a4, TC)>0 Then g_bTrouve = TRUE: Wscript.Echo sLine 'g_nbTrouves = g_nbTrouves + 1 End If Loop Until oDF.AtEndOfStream End Sub Function ParentFolder(s) REM ==================================== REM = Dossier parent d'un chemin complet REM ==================================== ParentFolder = CreateObject("Scripting.FileSystemObject").GetParentFolderName(s) End Function Sub RechercheFinie (sLieu) REM ==================== REM = Recherche terminée REM ==================== oDF.Close Set oDF = Nothing Set oFSO = Nothing If g_bTrouve = FALSE Then If DebugON = TRUE Then Wscript.Echo "Aucun résultat dans " & sLieu 'afficher aucun résultat si vide pour dossiers ET fichiers Else If DebugON = TRUE Then Wscript.Echo "Recherche réussie dans " & sLieu End If End Sub Sub RelancerOpenDirAvecOption_x REM ================================================= REM = Aucune option donnée => relancer opendir avec x REM ================================================= ShellRun "%comspec% /c opendir.vbs x " & TouteLaLigneDeCommande End Sub Sub SaveToFile (sTexte, sFile) REM ======================================== REM = Sauvegarde un texte dans un fichier REM ======================================== Dim oFSO, f1 Set oFSO = CreateObject("Scripting.FileSystemObject") Set f1 = oFSO.CreateTextFile(sFile) f1.Write sTexte f1.Close Set f1 = Nothing Set oFSO = Nothing End Sub Sub Search_1(sOrdre, sAction) REM ======================================================== REM = Lancer la recherche dans les catalogues DIR et/ou FILE REM ======================================================== g_bTrouve = FALSE Select Case sOrdre Case "dir" : 'recherche seulement dans gCatFileDIR Search_2 gCatFileDIR, sAction Case "file" : Search_2 gCatFileFILE, sAction Case "dir+file" : 'LE PLUS IMPORTANT !!! 'recherche seulement dans DIR (gCatFileDIR) puis dans FILE si rien trouvé dans DIR Search_2 gCatFileDIR, sAction If g_bTrouve=FALSE Then If DebugON = TRUE Then Wscript.Echo "" Search_2 gCatFileFILE, sAction End If Case "file+dir" : 'recherche seulement dans FILE puis DIR si rien trouvé dans FILE Search_2 gCatFileFILE, sAction If g_bTrouve=FALSE Then If DebugON = TRUE Then Wscript.Echo "" Search_2 gCatFileDIR, sAction End If Case "fileETdir" : Search_2 gCatFileFILE, sAction Search_2 gCatFileDIR, sAction Case "dirETfile" : Search_2 gCatFileDIR, sAction Search_2 gCatFileFILE, sAction End Select End Sub Sub Search_2(sCatalog, sAction) REM ==================================================== REM = Cherche un dossier et l'ouvre dans une session cmd REM ==================================================== VerifierExistenceCatalogue sCatalog AfficherRecherche sCatalog REM sAction : cmd ou bien explorer... g_sAction = sAction Select Case g_nbArgs Case 2 : Search_1_Param Slash(g_tArg(1)) Case 3 : Search_2_Param Slash(g_tArg(1)), Slash(g_tArg(2)) Case 4 : Search_3_Param Slash(g_tArg(1)), Slash(g_tArg(2)), Slash(g_tArg(3)) Case 5 : Search_4_Param Slash(g_tArg(1)), Slash(g_tArg(2)), Slash(g_tArg(3)), Slash(g_tArg(4)) Case Else : Msgbox "Limitez votre recherche à 4 arguments." Wscript.Quit(0) End Select RechercheFinie sCatalog End Sub Sub Search_1_Param(a1) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 Then 'sans >0, Instr ne fonctionne pas car kil renvoie une position Trouve sLine: Exit Do End If Loop Until oDF.AtEndOfStream End Sub Sub Search_2_Param(a1, a2) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 Then Trouve sLine: Exit Do End If Loop Until oDF.AtEndOfStream End Sub Sub Search_3_Param(a1, a2, a3) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 And _ Instr(1, sLine, a3, TC)>0 Then Trouve sLine: Exit Do End If Loop Until oDF.AtEndOfStream End Sub Sub Search_4_Param(a1, a2, a3, a4) Do sLine = oDF.ReadLine If Instr(1, sLine, a1, TC)>0 And _ Instr(1, sLine, a2, TC)>0 And _ Instr(1, sLine, a3, TC)>0 And _ Instr(1, sLine, a4, TC)>0 Then Trouve sLine: Exit Do End If Loop Until oDF.AtEndOfStream End Sub Function ShellRun(sCmd) REM =========================================== REM = Lancer une commande Run de l'object Shell REM = vers le fichier sOutputFile (synchrone) REM = ATTENTION : toujours vérifier cmd /c !!! REM =========================================== Dim oShell Set oShell = CreateObject("Wscript.Shell") ShellRun = oShell.Run(sCmd, 0, True) '1 = Activates and displays a window 'true = bWaitOnReturn, Boolean value 'indicating whether the script should 'wait for the program to finish executing 'before continuing to the next statement in your script. Set oShell = Nothing End Function Function Slash(s) REM ======================= REM = Remplace / par \ (pour faciliter la saisie lors de la recherche) REM ======================= Slash = Replace(s, "/", "\") End Function Sub View_Catalog REM ======================= REM = Afficher le catalogue REM ======================= ShellRun "cmd /c start " & gCatFileDIR ShellRun "cmd /c start " & gCatFileFILE End Sub Function Script_ParentFolder REM ====================================== REM = Retourne le dossier parent du script REM ====================================== Dim sfn sfn = Wscript.ScriptFullName Script_ParentFolder = Left(sfn, Len(sfn) - Len(Wscript.ScriptName)) End Function Sub Syntax REM ============== REM = Syntaxe/Aide REM ============== Dim sMsg, v v = vbCrLf sMsg = _ "*******************************************************************************************" & v & _ "OPENDIR.VBS (ou bien od.bat, qui appelle opendir.vbs)" & vbcrlf & _ "permet de se rendre rapidement dans un dossier," & v & _ "en spécifiant une/plusieurs parties d'un chemin complet." & v & _ "Il utilise deux catalogues." & v & _ "" & v & _ "Pour créer le catalogue, la commande interne dir est utilisée" & v & _ "(donc la recherche sur les caractères accentués sera aléatoire)." & v & _ "" & v & _ "Pour des questions de rapidité, la recherche est limitée à 4 paramètres maximum." & v & _ "Le code du script est facilement modifiable pour augmenter cette limite." & v & _ "Le catalogue n'a pas de limite de dossiers de départ." & v & _ "Pour faciliter la saisie, les / sont automatiquement remplacés par des \," & v & _ "vous pouvez saisir celui qui vous arrange." & v & _ "" & v & _ "" & v & _ "***** Utilisations courantes *****" & v & _ "1. créer le catalogue :" & v & _ " od r|u dossier [dossier | dossier | ... ]" & v & _ "2. mettre à jour le catalogue (r=refresh, u=update)" & v & _ " od r|u [dossier | dossier | ... ]" & v & _ "3. aller dans un dossier (c=cmd, x=explorer) :" & v & _ " od c|x|y|z param1 [param2] [param3] [param4]" & v & _ "4. lister des dossiers" & v & _ " od ld|lf|lfd|ldf param1 [param2] [param3] [param4]" & v & _ "Pour revenir au dossier précédent, taper popd puis entrée." & v & _ "" & v & _ "***** Exemples *****" & v & _ "1. créer le catalogue :" & v & _ " od u c:\windows ""d:\docs perso""" & v & _ " crée le catalogue avec les deux dossiers c:\windows ""d:\docs perso""" & v & _ " od r p:\" & v & _ " crée le catalogue avec le dossier p:\" & v & _ "" & v & _ "2. mettre à jour le catalogue" & v & _ " od u" & v & _ " met le catalogue à jour avec les dossiers scannés auparavant" & v & _ "" & v & _ "3. aller dans un dossier :" & v & _ " od x windows system32" & v & _ " va dans le premier dossier contenant les mots windows ET system32" & v & _ " od c \myfiles\" & v & _ " va dans le premier dossier contenant \myfiles\" & v & _ " od s -update" & v & _ " va dans le premier dossier contenant le mot -update" & v & _ " va dans le premier dossier contenant le mot -update" & v & _ "" & v & _ "4. lister des dossiers" & v & _ " od ld windows system32" & v & _ " va lister tous les dossiers contenant les mots windows et system32" & v & _ " od lf \myfiles" & v & _ " va lister tous les fichiers contenant le mot \myfiles" & v & _ " od ldf cuisine c:\ desserts" & v & _ " va lister tous les dossiers puis fichiers contenant cuisine, c:\ et desserts" & v & _ "" & v & _ "" & v & _ "Autres utilisations :" & v & _ " od e" & v & _ " ouvre le dossier parent de opendir.vbs" & v & _ " od v" & v & _ " voir les catalogues fichiers et dossiers" & v & _ "*******************************************************************************************" Wscript.Echo sMsg End Sub Function TouteLaLigneDeCommande REM ================================== REM = Reconstitue la ligne de commande REM ================================== Dim i For i = 0 To Wscript.Arguments.Count-1 TouteLaLigneDeCommande = TouteLaLigneDeCommande & " " & Wscript.Arguments(i) Next End Function Sub Trouve(sLine) REM ============================== REM = Aller dans le dossier trouvé REM ============================== Dim sCmd, sTypeFF g_bTrouve = TRUE Wscript.Echo sLine 'vérifier existence résultat sTypeFF = TypeFF(sLine) If sTypeFF = "" Then Wscript.Echo Now & " " & sLine & " n'existe pas (cause possible : problème de caractère avec accent)" Wscript.Echo Now & " tentative de lancement du dossier parent" If ParentFolder(sLine) <> sLine Then 'pour éviter boucle infinie Trouve ParentFolder(sLine) Exit Sub Else Wscript.Quit(0) 'rechercher sur la suite du catalogue ? End If End If Dim sLine2 sLine2 = sLine If sTypeFF = "file" Then sLine2 = ParentFolder(sLine) AppendToHistoryFile TouteLaLigneDeCommande 'n'enregistrer que les recherches fructueuses ? Select Case g_sAction Case "cmd" : Dim objShell Set objShell = CreateObject("WScript.Shell") Wscript.Echo "Taper popd pour revenir au dossier précédent." objShell.SendKeys "pushd """ & sLine2 & """" objShell.SendKeys "{enter}" Case "explorer" : sCmd = "explorer.exe /e, /n, """ & sLine2 & """" ShellRun "cmd /c " & sCmd Case "explorer /root" : sCmd = "explorer.exe /e, /n, /root, """ & sLine2 & """" ShellRun "cmd /c " & sCmd Case "explorer /select" : sCmd = "explorer.exe /e, /select, """ & sLine2 & """" ShellRun "cmd /c " & sCmd End Select End Sub Function TypeFF(s) REM =================================================== REM = Détermine si s est un dossier ou fichier existant REM =================================================== Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FolderExists(s) Then TypeFF = "folder" ElseIf oFSO.FileExists(s) Then TypeFF = "file" Else TypeFF = "" End If Set oFSO = Nothing End Function Sub Update_Catalogs REM ================================= REM = Mise à jour des deux catalogues REM ================================= Update_One_Catalog gCatFileDIR, "dossiers", "/ad" Update_One_Catalog gCatFileFILE, "fichiers", "/a-d" 'pour un catalogue global (dossiers+fichiers) : 'Update_One_Catalog gCatFileFILE, "dossiers et fichiers", "" Wscript.Echo _ "" & vbcrlf & _ "Lancer opendir.vbs v pour afficher le résultat du scan." End Sub Sub Update_One_Catalog(sCatalog, sType, DirParam) REM =========================================== REM = Mise à jour d'un catalogue REM =========================================== Dim sDossier, sEntete, sComment, dps, EnsembleDossiers Dim tDossier() If g_nbArgs = 1 Then 'u passé seulement en paramètre 'mise à jour du catalogue existant, récupérer les dossiers préscannés dps = DossiersPreScannes(tDossier, sCatalog) If dps = "aucun" Then Wscript.Echo _ "Vous n'avez pas encore utilisé opendir.vbs, la mise à jour n'est pas possible." & vbcrlf & _ "Lancer opendir.vbs avec les options adéquates :" & vbcrlf & _ "Exemple :" & vbcrlf & _ "opendir u c:\" & vbcrlf & _ "" Wscript.Quit(0) End If Else 'récupérer les dossiers à scanner depuis la ligne de commande ReDim tDossier(g_tArg.Count-2) Dim k For k = 0 To UBound(tDossier) tDossier(k) = g_tArg(k+1) EnsembleDossiers = EnsembleDossiers & " " & tDossier(k) Next Wscript.Echo Now & " Création du catalogue '" & sType & "' pour " & EnsembleDossiers End If Dim i sEntete = _ "REM **************************************************" & vbcrlf & _ "REM * Fichier catalogue utilisé par opendir.vbs (ne pas modifier l'en-tête)" & vbcrlf & _ "REM * Mise à jour : " & FormatDateTime(Now, vbLongTime) & vbcrlf & _ "REM * Dossiers scannés :" 'construire en-tête fichier catalogue For i = 0 To UBound(tDossier) sDossier = tDossier(i) If Folder_Exists(sDossier)=FALSE Then sComment = " (dossier absent)" Else sComment = "" sEntete = sEntete & vbcrlf & _ "REM * - " & sDossier & sComment Next sEntete = sEntete & vbcrlf & _ "REM **************************************************" & vbcrlf 'sauvegarder l'en-tête SaveToFile sEntete, sCatalog If dps <> "aucun" Then Wscript.Echo Now & " Mise à jour du catalogue '" & sType & "' pour les répertoires :" & dps 'scanner chaque dossier passé en paramètre For i = 0 To UBound(tDossier) sDossier = tDossier(i) If Folder_Exists(sDossier)=TRUE Then Wscript.Echo Now & " le dossier " & sDossier & " est analysé (" & sType & ") ..." ShellRun "cmd /c dir """ & sDossier & """ " & DirParam & " /s /b | sort >> " & sCatalog Else Wscript.Echo Now & " le dossier " & sDossier & " n'existe pas." End If Next End Sub Sub VerifierExistenceCatalogue(sCatFile) REM ============================= REM = Quitter si catalogue absent REM ============================= Dim oFSO_vec Set oFSO_vec = CreateObject("Scripting.FileSystemObject") If oFSO_vec.FileExists(sCatFile)=FALSE Then Wscript.Echo sCatFile & " n'existe pas, créer d'abord un catalogue avec opendir u ..." Set oFSO_vec = Nothing Wscript.Quit(0) End If Set oFSO_vec = Nothing Set oFSO = CreateObject("Scripting.FileSystemObject") Set oDF = oFSO.OpenTextFile(sCatFile) 'passer les lignes d'en-tête Dim s oDF.SkipLine Do If Instr(oDF.ReadLine, "REM ***********") Then Exit Do Loop End Sub Function WSHNetwork(sData) REM ================================= REM = Renvoie données WScript.Network REM ================================= Set WSHNetwork = WScript.CreateObject("WScript.Network") Select Case LCase(sData) Case "userdomain" : WSHNetwork = WSHNetwork.UserDomain Case "username" : WSHNetwork = WSHNetwork.UserName Case "computername" : WSHNetwork = WSHNetwork.ComputerName End Select End Function '*************************************** 'Procédures et fonctions de opendir.vbs 'Mise à jour : lancer cmd puis 'cmd /k pushd P:\_\o & p:\o\vbs\lister_sub_functions_d_un_vbs.vbs opendir.vbs & opendir.vbs_subs_et_functions.txt '*************************************** '*************************************** 'Procédures et fonctions de opendir.vbs '*************************************** 'Sub CommandLine.........................Analyse ligne de commande 'Sub AfficherRecherche(sLieu)............Afficher pour info en attendant les résultats 'Sub AppendToHistoryFile(s)..............Enregistre la recherche 'Fct DossiersPreScannes(t, sCatFile).....Lister les dossiers des catalogues 'Fct Folder_Exists(sFolder)..............Vérifier l'existence d'un dossier 'Sub History.............................History 'Sub Lister_1(sOrdre, sAction)...........Lister depuis catalogues DIR et/ou FILE 'Sub Lister_2(sCatalog, sAction).........Cherche un dossier et lister 'Sub List_1_Param(a1).................... 'Sub List_2_Param(a1,a2)................. 'Sub List_3_Param(a1,a2,a3).............. 'Sub List_4_Param(a1,a2,a3,a4)........... 'Fct ParentFolder(s).....................Dossier parent d'un chemin complet 'Sub RechercheFinie (sLieu)..............Recherche terminée 'Sub RelancerOpenDirAvecOption_x.........Aucune option donnée => relancer opendir avec x 'Sub SaveToFile (sTexte, sFile)..........Sauvegarde un texte dans un fichier 'Sub Search_1(sOrdre, sAction)...........Lancer la recherche dans les catalogues DIR et/ou FILE 'Sub Search_2(sCatalog, sAction).........Cherche un dossier et l'ouvre dans une session cmd 'Sub Search_1_Param(a1) ................. 'Sub Search_2_Param(a1, a2).............. 'Sub Search_3_Param(a1, a2, a3).......... 'Sub Search_4_Param(a1, a2, a3, a4)...... 'Fct ShellRun(sCmd)......................Lancer une commande Run de l'object Shell 'Fct Slash(s)............................Remplace / par \ (pour faciliter la saisie lors de la recherche) 'Sub View_Catalog........................Afficher le catalogue 'Fct Script_ParentFolder.................Retourne le dossier parent du script 'Sub Syntax..............................Syntaxe/Aide 'Fct TouteLaLigneDeCommande..............Reconstitue la ligne de commande 'Sub Trouve(sLine).......................Aller dans le dossier trouvé 'Fct TypeFF(s)...........................Détermine si s est un dossier ou fichier existant 'Sub Update_Catalogs.....................Mise à jour des deux catalogues 'Sub Update_One_Catalog(sCatalog, sT.....Mise à jour d'un catalogue 'Sub VerifierExistenceCatalogue(sCat.....Quitter si catalogue absent 'Fct WSHNetwork(sData)...................Renvoie données WScript.Network '***************************************