La solution se présente ainsi :
Il y a 2 fichiers à la racine et un répertoire :
• 1 fichier bat pour lancer la solution
• 1 script vbs
• 1 répertoire "ToDo" contenant les choses à lancer
Le répertoire "ToDo" contient les script qu'il faudra lancer 1 à 1.
Dans cet exemple "ToDo" contient 4 scripts à exécuter
ToDo.bat lance le script ToDo.vbs
ToDo.vbs va chercher le premier script qu'il trouve par ordre alphabétique dans le sous-répertoire "ToDo". Il l'exécute et s'arrête. Il n'exécute qu'un script à la fois.
Le script qui vient d'être exécuté est alors déplacé dans le sous-répertoire "Done" du répertoire "Todo", de sorte qu'au prochain lancement de ToDo.vbs (via ToDo.bat), c'est le prochain script présent dans "Todo" qui sera lancé, soit dans l'exemple ci-dessous "02 Updates 01.bat"
A force de lancer ToDo.vbs (via ToDo.bat), le sous-répertoire "ToDo" ne contiendra donc plus de scripts à exécuter. Ces derniers auront tous été déplacés dans le répertoire "Done"
Le contenu du fichier ToDo.bat est simple :
cd /d %~dp0
cscript.exe ToDo.vbs
Lien vers le fichier : cliquez ici
Le Script ToDo.vbs est celui qui exécute l'ensemble des opérations
Dim objFSO, objTextFile
Dim NomFichier, CheminFichier, CheminScriptActuel, ScriptFileName, Position
Dim WSHShell
Dim varEmplacementCible
Set WSHShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
'On fait un objet qui représente le répertoire à explorer
Set objFolder = objFSO.GetFolder(CheminScriptActuel & "\ToDo")
For Each MyFile In objFolder.Files
Wscript.echo MyFile.Name
Wscript.echo MyFile.Path
varEmplacementCible = CheminScriptActuel & "\" & MyFile.Name
Call objFSO.CopyFile (MyFile.Path, varEmplacementCible, True)
Call objFSO.MoveFile (MyFile.Path, CheminScriptActuel & "\ToDo\Done\")
Commande = "cmd /c """ & varEmplacementCible & """"
WSHShell.Run Commande
'Commande = "Start del /f /q """ & varEmplacementCible & """"
'wscript.echo Commande
'Start cmd /c del /f /q "C:\aaaWindowsUpdateOnVMs\Scripts\01.bat" >> zzzzzlog.txt
'WSHShell.Run Commande
Exit For
Next
Set objFolder = Nothing
Set objFSO = Nothing
Set WSHShell = Nothing
Lien vers le fichier : cliquez ici
Programmez maintenant une tâche planifiée qui lancera votre ToDo.bat à chaque démarrage de la machine. A chaque boot/reboot de la machine un des scripts de votre séquence s'exécutera, ce qui sera parfait pour passer par exemple une série de Windows Updates
Cela peut être mis en place avec ce .bat par exemple
cd /d %~dp0
SCHTASKS /create /tn "WindowsUpdateScript" /tr \"%~dp0\MonProgramme.exe\" /sc onstart /RU "%computername%\Administrator" /RP "password"
Lien vers le fichier : cliquez ici
Téléchargement(s)
Nom | Site Web d origine | Description |
---|---|---|
5385_Script_Vbs_ToDo.zip | Zip contenant le nécessaire à l'article 5385 | |
5385_WindowsUpdateOnVMs.z... | Exemple d'utilisation pour appliquer plusieurs passes de Windows Update |
Article(s) suivant(s)