Copie de fichiers vers une liste de PC [Résolu]

bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 25 mars 2011 à 15:19 - Dernière réponse : 4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention
- 30 mars 2011 à 12:23
Bonjour,

voilà ce que je cherche à faire :

- la copie d'un soft à installer vers tous les pc contenus dans un fichier texte

-l'installation de ce même soft sur l'ensemble des pc du fichier texte

-la suppression du fichier copié après l'installation ...

si quelqu'un à une idée ... ^^

j'ai déjà des bouts de codes :


Dim objNetwork 
Dim objFSO 
Dim sSourcePath 'dossier source où se situe le fichier à sauvagarder
Dim sSaveName 'fichier à sauvegarder 
Dim Hostname 'ressource cible
Dim strPathDestination 'dossier destination où copier le fichier 
Dim objShell

Hostname = c:\deploy\webcam\hostname.txt 'la fameuse liste ou se trouve tous les PCs qui doivent recevoir le fichier
Set objShell = CreateObject("Wscript.Shell")
sSourcePath = "C:\Deploy\Webcam"
sSaveName= "driver.msi"
strPathDestination ="\" & Hostname & "\C$\emeadts" 'doit récupérer les noms des pcs depuis la fameuse liste hostname.txt

Set objFSO =CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile sSourcePath & sSaveName, strPathDestination
objShell.Run "cmd /k psexec -c -f -high @"c:\deploy\webcam\hostname.txt" c:\deploy\webcam\deploy.cmd "

Set ObjFSO= Nothing



Merci de votre aide et bon weekend XD
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 29 mars 2011 à 15:10
3
Merci
 Bonjour,


En mettant le fichier hostname.txt dans un dictionnaire, on obtient:



Option Explicit
Const ForReading = 1

Dim objFso, objFile, objDictionary, objShell 
Dim sSourcePath 'dossier source où se situe le fichier à sauvegarder
Dim sSaveName 'fichier à sauvegarder 
Dim hostname
Dim strPathDestination 'dossier destination où copier le fichier 
Dim strName, strDicoKey

sSourcePath = "C:\Deploy\Webcam"
hostname = "D:\hostname.txt"
sSaveName= "driver.msi"

Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile(hostname, ForReading)
Set objShell = CreateObject("Wscript.Shell")

Do Until objFile.AtEndOfStream
   strName = Trim(objFile.ReadLine)
   If Not objDictionary.Exists(strName) And Len(strName) > 0 Then
      objDictionary.Add strName, strName
   End If
Loop
objFile.Close

For Each strDicoKey in objDictionary.Keys
    strPathDestination ="\" & strDicoKey & "\C$\emeadts"
    
    MsgBox strPathDestination,,"strPathDestination"
    MsgBox "cmd /k psexec -c -f -high \" & strDicoKey & " c:\deploy\webcam\deploy.cmd "
    
    'objFso.CopyFile sSourcePath & sSaveName, strPathDestination
    'objShell.Run "cmd /k psexec -c -f -high \"& strDicoKey &" c:\deploy\webcam\deploy.cmd "
Next

Set objDictionary = Nothing
Set objFile = Nothing
Set objFso = Nothing
Set objShell = Nothing




jean-marc

Merci cs_JMO 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_JMO
bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 25 mars 2011 à 16:58
0
Merci
j'avance un peu ...


Dim objNetwork 
Dim objFSO 
Dim sSourcePath 'dossier source où se situe le fichier à sauvagarder
Dim sSaveName 'fichier à sauvegarder 
Dim Hostname 'ressource cible
Dim strPathDestination 'dossier destination où copier le fichier 
Dim objShell
Set objFSO =CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")

Const ForReading 1, ForWriting 2, ForAppending = 8
Set H = objFSO.OpenTextFile("c:\Deploy\Webcam\hostname.txt", ForReading)
Hostname = H.ReadAll 'quelle fonction pour renvoyer chaque ligne vers la variable Hostame?
'je suppose que je doit créer une boucle ?

sSourcePath = "C:\Deploy\Webcam"
sSaveName= "driver.msi"
strPathDestination ="\" & Hostname & "\C$\emeadts"

objFSO.CopyFile sSourcePath & sSaveName, strPathDestination
objShell.Run "cmd /k psexec -c -f -high \"& hostname &" c:\deploy\webcam\deploy.cmd "
Set ObjFSO= Nothing

Commenter la réponse de bigkifran
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 28 mars 2011 à 16:39
0
Merci
Je comprends pas la question. Soit plus claire.
Commenter la réponse de 4u4me4us
bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 28 mars 2011 à 16:52
0
Merci
Bonjour,

j'ai une liste (que l'on a appelé hostname.txt) dans laquelle on entre à la suite les noms de pc qui doivent recevoir un fichier .msi

Ce fichier est un driver de Webcam que l'on doit installer .

Je souhaite copier ce driver sur tous les postes contenus dans le fichier texte, pour ensuite l' installer.

une fois le driver installé, il me faut supprimer le .msi des postes.

J'espère avoir été un peu plus clair (j'avoue c'est pas mon fort ^^)

Merci de votre aide !
Commenter la réponse de bigkifran
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 28 mars 2011 à 17:02
0
Merci
Bien plus claire. As-tu commencé à codé dans ce sens?
Si oui: Montre moi la partie de code et dis moi pr quoi elle ne fait pas ce que tu veux

Si non: as tu déjà utilisé filecopy(source,destination).

Un pc ne peut pas faire une copie sur un autre. Exemple
A ne peut pas forcé un fichier à aller chez B

C B qui prend le fichier chez A

Comprends-tu ce que je veut dire ?
Commenter la réponse de 4u4me4us
bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 29 mars 2011 à 11:50
0
Merci
Yep ^^

Alors au départ le code ressemble à ça :


Dim objNetwork 
Dim objFSO 
Dim sSourcePath 'dossier source où se situe le fichier à sauvagarder
Dim sSaveName 'fichier à sauvegarder 
Dim Hostname 'ressource cible
Dim strPathDestination 'dossier destination où copier le fichier 
Dim objShell

Hostname=InputBox("Nom de Machine / IP ")
Set objShell = CreateObject("Wscript.Shell")
sSourcePath = "C:\Deploy\Webcam"
sSaveName= "driver.msi"
strPathDestination ="\" & Hostname & "\C$\emeadts"

Set objFSO =CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile sSourcePath & sSaveName, strPathDestination
objShell.Run "cmd /k psexec -c -f -high \"& hostname &" c:\deploy\webcam\deploy.cmd "

Set ObjFSO= Nothing



ce code fonctionne bien mais je souhaite le modifier pour pouvoir l'utiliser avec le fichier texte.

Suis-je sur la bonne route ? :D
Commenter la réponse de bigkifran
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 12:22
0
Merci
Tu le dis toi même "ce code fonctionne".

il faut juste que tu modif ton code par un truc style


dim canal as byte
dim Hostname as string
canal = FreeFile
Open chemin de ton fichier For Input As #canal
While Not EOF(canal)
Line Input #canal, Hostname

Set objShell = CreateObject("Wscript.Shell")
sSourcePath = "C:\Deploy\Webcam"

sSaveName= "driver.msi"
strPathDestination ="\" & Hostname & "\C$\emeadts"


Set objFSO =CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile sSourcePath & sSaveName, strPathDestination
objShell.Run "cmd /k psexec -c -f -high \"& hostname &" c:\deploy\webcam\deploy.cmd "
wend
Set ObjFSO= Nothing
Close #canal
Commenter la réponse de 4u4me4us
bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 29 mars 2011 à 14:28
0
Merci
je te remercie pour ton aide mais j' ai oublié de te dire que le script était en vbs.

j'ai un message d'erreur sur

dim canal as byte 
Expected end of statement.


apparemment byte ne serait pas reconnu dans le code vbs ...

j'ai regardé vite fait sur google un équivalent mais pour l'instant je patauge :(

je repars donc dans mes investigations ^^
Commenter la réponse de bigkifran
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 14:39
0
Merci
Dans ce cas mais un int. Byte c jute pour faire de l'économie de mémoire. Par contre la lecture de fichier par vbs connais pas.
Commenter la réponse de 4u4me4us
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 14:40
0
Merci
Fait dim canal. Te prend pas la tête
Commenter la réponse de 4u4me4us
bigkifran 10 Messages postés vendredi 31 juillet 2009Date d'inscription 30 mars 2011 Dernière intervention - 30 mars 2011 à 09:53
0
Merci
Merci Jean-Marc !!
non seulement ça mais je comprend ^^
Du coup je vais pouvoir avancer méchamment sur mes autres "projets" XD

Merci aussi à 4u4me4us !

A+

(de toute façon vu les questions que j'ai, vous me reverrez XD)
Commenter la réponse de bigkifran
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 30 mars 2011 à 12:23
0
Merci
Ok 2rien
Commenter la réponse de 4u4me4us

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.