Exporter (0) Imprimer
Développer tout
Développer Réduire

Comment puis-je modifier le dossier de travail d'un script ?

S'il vous plaît Monsieur Script...

Hey, Scripting Guy!

Bienvenue dans cette section TechNet, dans laquelle le Monsieur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système.

Question du jour : comment puis-je modifier le dossier de travail d'un script ?

Comment puis-je modifier le dossier de travail d'un script ?Comment puis-je modifier le dossier de travail d'un script ?

S'il vous plaît Monsieur Script... Mon script et l'application qu'il démarre doivent partager le même dossier de travail. Comment puis-je modifier le dossier de travail d'un script ?

-- JM

Bonjour JM. Vous pouvez modifier le dossier en cours (ou dossier de travail) d'un script en définissant simplement la valeur de la propriété CurrentDirectory de l'objet Shell Wscript. (Remarque : la propriété CurrentDirectory a été introduite dans la version 5.6 de l'environnement d'exécution de scripts Windows (WSH, Windows Script Host. Par conséquent, vous devez utiliser cette version pour pouvoir exécuter les scripts présentés ici.) Voici un exemple de script qui envoie un écho du répertoire actuel d'un script, remplace le répertoire en cours par C:\Windows, puis envoie à nouveau un écho du répertoire en cours :


Set objShell = CreateObject("Wscript.Shell")
Wscript.Echo objShell.CurrentDirectory

objShell.CurrentDirectory = "C:\Windows"
Wscript.Echo objShell.CurrentDirectory


Comme vous pouvez vous en douter, dans la dernière ligne du script, C:\Windows est envoyé comme écho du nom du répertoire en cours.

Maintenant que nous savons comment modifier le dossier en cours, tout ce qui nous reste à faire, c'est écrire un petit script, très simple, qui démarre une application, puis modifie le répertoire en cours de façon à le faire correspondre au dossier de travail de cette application. Par exemple, le script suivant démarre le Bloc-notes (C:\Windows\System32\Notepad.exe), détermine le dossier de travail souhaité en analysant le chemin d'accès à Notepad.exe, puis remplace le répertoire en cours par C:\Windows\System32 :


Set objShell = CreateObject("Wscript.Shell")

strApp = "C:\Windows\System32\Notepad.exe"
arrPath = Split(strApp, "\")

For i = 0 to Ubound(arrPath) - 1
    strAppPath = strAppPath & arrPath(i) & "\"
Next 

objShell.CurrentDirectory = strAppPath
Wscript.Echo objShell.CurrentDirectory

objShell.Run(strApp)


En réalité, nous ne faisons que stocker le chemin d'accès à l'application (C:\Windows\System32\Notepad.exe) dans une variable nommée strApp. Puis, nous utilisons la fonction Split de VBScript pour fractionner ce chemin d'accès et obtenir un groupe (en utilisant \ comme délimiteur). Le résultat est un groupe composé des éléments suivants :


C:
Windows
System32
Notepad.exe


Pourquoi créer un groupe avec ces éléments ? Comme vous pouvez le constater, les trois premiers éléments, plus deux \, nous indiquent le chemin recherché : C:\Windows\System32. En fractionnant ainsi le chemin d'accès, nous pouvons déterminer celui du dossier. Il suffit pour cela de prendre les trois premiers éléments et d'éliminer le nom du fichier exécutable (Notepad.exe). C'est exactement le rôle de la ligne de code suivante, qui reconstruit le chemin d'accès en utilisant tous les éléments du groupe, à l'exception du dernier :


For i = 0 to Ubound(arrPath) - 1
    strAppPath = strAppPath & arrPath(i) & "\"
Next


En effet, les groupes commencent toujours par l'élément 0, c'est pourquoi notre boucle For-Next commence par 0. La propriété Ubound, quant à elle, représente le dernier élément du groupe. Nous ne voulons pas utiliser le dernier élément, mais nous en rapprocher le plus possible. Ainsi, Ubound – 1 désigne simplement le dernier élément du groupe moins 1, ou l'avant-dernier élément. Dans l'exemple de script illustré ici, nous obtenons l'équation suivante :

C: + \ + Windows + \ + System32 + \

Ou C:\Windows\System32\. (La barre oblique inverse de la fin ne joue ici aucun rôle, vous pouvez donc la tronquer).

À partir d'ici, nous remplaçons le répertoire en cours par C:\Windows\System32, nous envoyons un écho de la valeur du répertoire en cours (simplement pour que vous sachiez que la modification a été effectuée), puis nous démarrons le Bloc-notes. Et voilà le problème résolu !

Pour en savoir plus

Consultez les archives de S'il vous plaît Monsieur Script... site en anglais

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Afficher:
© 2014 Microsoft