TUTOS.EU

VbScript pour lancer une séquence de commande au démarrage du système

VbScript pour lancer un bat ou script au démarrage du système

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 Copier le code

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 Copier le code

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 Copier le code

Téléchargement(s)

NomSite Web d origineDescription
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


2