OVH Cloud OVH Cloud

Besoin d'aide pour le B.A.BA de VBS

2 réponses
Avatar
moratella
Bonjour,
Je vous sollicite car je suis un ignorant en scripting notemment en VBS.
Je dois faire un script 'basic' qui doit faire:

- récupérer le nom de la machine sur lequel il s'éxecute (6 caractères) dans
une variable 'nom_machine'
- Prendre les 4 derniers caractères de nom_machine et les placer dans une
variable 'indicateur'
- prendre une nouvelle variable 'nom_fichier' composé de l'indicateur + une
chaine de caractère fixe (de type: XXXX_réseau.txt)
- Ouvrir le fichier 'nom_fichier' et chercher si 'nom_machine' est présent
dedans
- si il est présent alors prendre le champs suivant dans la variable
'imprimante'
- sinon rien (fin du script)
fin du script

après le but est d'installé via un outil l'imprimante ainsi désignée sur le
poste.
Je ne me rends pas bien compte de la complexité d'un tel script, je sais
lancer un programme ou mapper une ressource mais pour ce qui est de la
gestion des fichiers je suis perdu.

Le fichier text 'nom-fichier' est de la forme: deux colonnes:
nom_serveur1; nom_imprimanteX
nom_serveur2; nom_imprimanteZ....

Je vous remercie d'avance de voir ce qu'il est envisageable.
Je vous avout être un peu dépassé et limite en mode panique..:-)
Très bonne journée à vous
Raphaël

2 réponses

Avatar
Martin CLAVREUIL
bonjour,

Connexion de l'imprimante mise à part, voici le fichier VBS qui fait ce que
vous demandez :


'Début de fichier VBS
'Récup du nom de machine
set nwk=CreateObject("WScript.Network")
Nom_Machine=nwk.ComputerName

'On garde les 4 derniers caractères
Indicateur=right(Nom_Machine,4)

'Contruction du nom de fichier
Nom_Fichier=Indicateur & "_Reseau.txt"

'Test de l'existance du fichier
set fso=CreateObject("Scripting.FileSystemObject")
if fso.fileExists(Nom_Fichier) then
Contenu_Fichier=fso.OpenTextFile(Nom_Fichier).ReadAll
'Test du contenu du fichier
if inStr(1,Contenu_Fichier,Nom_Machine)>0 then
'Recherche du nom de l'imprimante
Nom_Imprimante=split(split(Contenu_Fichier,vbcrlf & Nom_Machine &
";")(1),vbcrlf)(0)
'Le nom de l'imprimate est chargé dans 'Nom_Imprimante
'Le mode de recherche est basé sur la structure de fichier que vous
avez décrit et ne marche que dans ce cas.
Msgbox Nom_Imprimante
end if
end if
'Fin du fichier VBS


"moratella" a écrit dans le message de
news:
Bonjour,
Je vous sollicite car je suis un ignorant en scripting notemment en VBS.
Je dois faire un script 'basic' qui doit faire:

- récupérer le nom de la machine sur lequel il s'éxecute (6 caractères)
dans
une variable 'nom_machine'
- Prendre les 4 derniers caractères de nom_machine et les placer dans une
variable 'indicateur'
- prendre une nouvelle variable 'nom_fichier' composé de l'indicateur +
une
chaine de caractère fixe (de type: XXXX_réseau.txt)
- Ouvrir le fichier 'nom_fichier' et chercher si 'nom_machine' est présent
dedans
- si il est présent alors prendre le champs suivant dans la variable
'imprimante'
- sinon rien (fin du script)
fin du script

après le but est d'installé via un outil l'imprimante ainsi désignée sur
le
poste.
Je ne me rends pas bien compte de la complexité d'un tel script, je sais
lancer un programme ou mapper une ressource mais pour ce qui est de la
gestion des fichiers je suis perdu.

Le fichier text 'nom-fichier' est de la forme: deux colonnes:
nom_serveur1; nom_imprimanteX
nom_serveur2; nom_imprimanteZ....

Je vous remercie d'avance de voir ce qu'il est envisageable.
Je vous avout être un peu dépassé et limite en mode panique..:-)
Très bonne journée à vous
Raphaël



Avatar
moratella
Bonjour,
Je vous remrcie énormément pour le temps que vous avez passé dessus...
Je vais tester ça de suite.
Un grand merci et bon début de semaine
Raph

"Martin CLAVREUIL" wrote:

bonjour,

Connexion de l'imprimante mise à part, voici le fichier VBS qui fait ce que
vous demandez :


'Début de fichier VBS
'Récup du nom de machine
set nwk=CreateObject("WScript.Network")
Nom_Machine=nwk.ComputerName

'On garde les 4 derniers caractères
Indicateur=right(Nom_Machine,4)

'Contruction du nom de fichier
Nom_Fichier=Indicateur & "_Reseau.txt"

'Test de l'existance du fichier
set fso=CreateObject("Scripting.FileSystemObject")
if fso.fileExists(Nom_Fichier) then
Contenu_Fichier=fso.OpenTextFile(Nom_Fichier).ReadAll
'Test du contenu du fichier
if inStr(1,Contenu_Fichier,Nom_Machine)>0 then
'Recherche du nom de l'imprimante
Nom_Imprimante=split(split(Contenu_Fichier,vbcrlf & Nom_Machine &
";")(1),vbcrlf)(0)
'Le nom de l'imprimate est chargé dans 'Nom_Imprimante
'Le mode de recherche est basé sur la structure de fichier que vous
avez décrit et ne marche que dans ce cas.
Msgbox Nom_Imprimante
end if
end if
'Fin du fichier VBS


"moratella" a écrit dans le message de
news:
Bonjour,
Je vous sollicite car je suis un ignorant en scripting notemment en VBS.
Je dois faire un script 'basic' qui doit faire:

- récupérer le nom de la machine sur lequel il s'éxecute (6 caractères)
dans
une variable 'nom_machine'
- Prendre les 4 derniers caractères de nom_machine et les placer dans une
variable 'indicateur'
- prendre une nouvelle variable 'nom_fichier' composé de l'indicateur +
une
chaine de caractère fixe (de type: XXXX_réseau.txt)
- Ouvrir le fichier 'nom_fichier' et chercher si 'nom_machine' est présent
dedans
- si il est présent alors prendre le champs suivant dans la variable
'imprimante'
- sinon rien (fin du script)
fin du script

après le but est d'installé via un outil l'imprimante ainsi désignée sur
le
poste.
Je ne me rends pas bien compte de la complexité d'un tel script, je sais
lancer un programme ou mapper une ressource mais pour ce qui est de la
gestion des fichiers je suis perdu.

Le fichier text 'nom-fichier' est de la forme: deux colonnes:
nom_serveur1; nom_imprimanteX
nom_serveur2; nom_imprimanteZ....

Je vous remercie d'avance de voir ce qu'il est envisageable.
Je vous avout être un peu dépassé et limite en mode panique..:-)
Très bonne journée à vous
Raphaël