Encore une fois je fais appel à vos services de professionnels dans l'art du
développement.
Je me trouve confronté à un problème bête comme choux; les noms longs.
Dans un script Vbs, je dois lancer une commande de type robocopy qui se
trouve dans une arbo de C:\program files et bien entendu avec plein de
commutateurs qui vont avec. La destination de la copie est sur un partage
réseau.
Mon début de script est comme ceci:
=========== Couic==================
On Error Resume Next
Dim Install_
strComputer = "."
Set Reponse = Nulle
Set Install_ = "c:\program files\XXX\Nomad-Sync"
set source_copie = "D:\synchro"
set destination_copie = \\Serveur\partage
=========== Couic==================
et la fin qui me fait défaut, après une MSgbox de lancement:
=========== Couic2==================
En gros j'ai un C:\program files\xxx\Nomad-Sync\robocopy.exe Source
Destination /MIR /R:3 /W:10 /X /NP /LOG+:Sync.log à lancer. Problème avec le
répertoire "Program files".
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour Gilles,
Toujours présent à l'appel, çà fait plaisir. Je vais tester tout ca. Merci
Eric
Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne reconnait pas mes variables. en debut de code j'ai :
Set Reponse = Nulle Set Install_ = "c:program filesApaveNomad-Sync" set source_copie = "D:synchro" set destination_copie = "C:test"
Mais quand je fais un Msgbox Install_ il m'affiche une boite vierge. Ma variable est mal définie? un Msgbox Install_ & "robocopy.exe" ca m'affiche une fenêtre avec robocopy. Evidement c'est pareil pour les autres.
Merci d'avance
Eric
"Eric Galais" <x@x.com> a écrit dans le message de news:
OCTlspT4GHA.4560@TK2MSFTNGP03.phx.gbl...
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
uhgCN4L4GHA.2464@TK2MSFTNGP06.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:eqPWPuL4GHA.5024@TK2MSFTNGP02.phx.gbl
| Bonsoir tout le monde,
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour Gilles,
Toujours présent à l'appel, çà fait plaisir. Je vais tester tout ca.
Merci
Eric
Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne
reconnait pas mes variables.
en debut de code j'ai :
Set Reponse = Nulle
Set Install_ = "c:program filesApaveNomad-Sync"
set source_copie = "D:synchro"
set destination_copie = "C:test"
Mais quand je fais un Msgbox Install_ il m'affiche une boite vierge. Ma
variable est mal définie?
un Msgbox Install_ & "robocopy.exe" ca m'affiche une fenêtre avec
robocopy.
Evidement c'est pareil pour les autres.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Bonjour Gilles,
Toujours présent à l'appel, çà fait plaisir. Je vais tester tout ca. Merci
Eric
Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne reconnait pas mes variables. en debut de code j'ai :
Set Reponse = Nulle Set Install_ = "c:program filesApaveNomad-Sync" set source_copie = "D:synchro" set destination_copie = "C:test"
Mais quand je fais un Msgbox Install_ il m'affiche une boite vierge. Ma variable est mal définie? un Msgbox Install_ & "robocopy.exe" ca m'affiche une fenêtre avec robocopy. Evidement c'est pareil pour les autres.
Merci d'avance
Eric
Gilles LAURENT
"Eric Galais" a écrit dans le message de news:u8R%
Bonjour Eric,
| Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne | reconnait pas mes variables. | en debut de code j'ai : | | Set Reponse = Nulle | Set Install_ = "c:program filesApaveNomad-Sync" | set source_copie = "D:synchro" | set destination_copie = "C:test"
En phase de debugging, toujours mettre en commentaire la ligne de gestion des erreurs suivante : On Error Resume Next
La déclaration "Set" permet de créer une instance d'un objet : Set oFS = CreateObject ("Scripting.FileSystemObject")
Pour définir des variables : source_copie = "D:synchro"
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Eric Galais" <x@x.com> a écrit dans le message de
news:u8R%23UtU4GHA.1544@TK2MSFTNGP04.phx.gbl
Bonjour Eric,
| Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne
| reconnait pas mes variables.
| en debut de code j'ai :
|
| Set Reponse = Nulle
| Set Install_ = "c:program filesApaveNomad-Sync"
| set source_copie = "D:synchro"
| set destination_copie = "C:test"
En phase de debugging, toujours mettre en commentaire la ligne de
gestion des erreurs suivante :
On Error Resume Next
La déclaration "Set" permet de créer une instance d'un objet :
Set oFS = CreateObject ("Scripting.FileSystemObject")
Pour définir des variables :
source_copie = "D:synchro"
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Eric Galais" a écrit dans le message de news:u8R%
Bonjour Eric,
| Pour la syntaxe c'est nickel mais j'ai un soucil qui persiste... il ne | reconnait pas mes variables. | en debut de code j'ai : | | Set Reponse = Nulle | Set Install_ = "c:program filesApaveNomad-Sync" | set source_copie = "D:synchro" | set destination_copie = "C:test"
En phase de debugging, toujours mettre en commentaire la ligne de gestion des erreurs suivante : On Error Resume Next
La déclaration "Set" permet de créer une instance d'un objet : Set oFS = CreateObject ("Scripting.FileSystemObject")
Pour définir des variables : source_copie = "D:synchro"
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Eric Galais
"Gilles LAURENT" a écrit dans le message de news:
"Eric Galais" a écrit dans le message de news:u8R%
En phase de debugging, toujours mettre en commentaire la ligne de gestion des erreurs suivante : On Error Resume Next
C'est noté, j'ai copié bêtement car mon niveau actuel se résume à du légo avec des bouts de scripts et quelques recherches persos.
La déclaration "Set" permet de créer une instance d'un objet : Set oFS = CreateObject ("Scripting.FileSystemObject")
Je l'utilise aussi dans mon script , çà ca va.
Pour définir des variables : source_copie = "D:synchro"
Ca je le fais bien mais c'est bizard ca marche pas. Mon code entier est le suivant:
========= Couic ============================== On Error Resume Next Dim Install_ strComputer = "."
Set Reponse = Nulle Set Install_ = "c:program filesApaveNomad-Sync" set source_copie = "D:synchro" set destination_copie = "C:test"
Msgbox "Bienvenue dans l'outil de synchronisation Nomad-Sync",,"Nomad-Sync" Set ObjWMI = GetObject("winmgmts:" & strComputer & "rootcimv2") Set colItems = ObjWMI.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each objItem in colItems If Not IsNull(objItem.IPAddress) Then IP = objItem.IPAddress(IP) End If Next If Instr(1, IP , "130.1.") = 0 Then Msgbox "Votre PC n'est pas sur son site d'origine, il ne sera pas synchronisé",Vbcritical,"Hors site" Else Msgbox "Votre adresse IP est: " & IP , Vbinformation,"Vérification de localisation": _ Reponse=Msgbox ("Votre Pc est bien sur site, Voulez vous lancer la synchronisation de vos données?", _ Vbquestion+vbYesNo,"Synchronisation") End If 'WScript.Echo "pouet" & Install_ If Reponse= 6 Then _ WshShell.Run (Install_ & "robocopy.exe """ & Source_copie & """ """ & destination_copie & "%computername%"" /MIR /R:3 /W:10 /X /NP /LOG+:""" & Install_ &"Logssync.log""") _ Else Msgbox "Procédure annulée",Vbexclamation,"Annulation" _ End If ========= Couic ============================== Dans le WshShell.Run j'avais testé les Chr(34) mais ca faisait pareil. Pas d'erreur mais rien ne se passe. (peut être à cause du "On Error Resume Next" que j'avais laissé).
Au final le destination_copie sera un chemin serveur, j'espère que le double anti slash sera bien géré dans la chaine WshShell.Run.
Si une personne à le temps de se plonger dans mon monde .... :)
Merci d'avance.
Eric
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
ubCDk1U4GHA.3400@TK2MSFTNGP04.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:u8R%23UtU4GHA.1544@TK2MSFTNGP04.phx.gbl
En phase de debugging, toujours mettre en commentaire la ligne de
gestion des erreurs suivante :
On Error Resume Next
C'est noté, j'ai copié bêtement car mon niveau actuel se résume à du légo
avec des bouts de scripts et quelques recherches persos.
La déclaration "Set" permet de créer une instance d'un objet :
Set oFS = CreateObject ("Scripting.FileSystemObject")
Je l'utilise aussi dans mon script , çà ca va.
Pour définir des variables :
source_copie = "D:synchro"
Ca je le fais bien mais c'est bizard ca marche pas. Mon code entier est le
suivant:
========= Couic ============================== On Error Resume Next
Dim Install_
strComputer = "."
Set Reponse = Nulle
Set Install_ = "c:program filesApaveNomad-Sync"
set source_copie = "D:synchro"
set destination_copie = "C:test"
Msgbox "Bienvenue dans l'outil de synchronisation Nomad-Sync",,"Nomad-Sync"
Set ObjWMI = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colItems = ObjWMI.ExecQuery ("Select IPAddress from
Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each objItem in colItems
If Not IsNull(objItem.IPAddress) Then
IP = objItem.IPAddress(IP)
End If
Next
If Instr(1, IP , "130.1.") = 0 Then
Msgbox "Votre PC n'est pas sur son site d'origine, il ne sera pas
synchronisé",Vbcritical,"Hors site"
Else
Msgbox "Votre adresse IP est: " & IP , Vbinformation,"Vérification de
localisation": _
Reponse=Msgbox ("Votre Pc est bien sur site, Voulez vous lancer la
synchronisation de vos données?", _
Vbquestion+vbYesNo,"Synchronisation")
End If
'WScript.Echo "pouet" & Install_
If Reponse= 6 Then _
WshShell.Run (Install_ & "robocopy.exe """ & Source_copie & """ """ &
destination_copie & "%computername%"" /MIR /R:3 /W:10 /X /NP /LOG+:""" &
Install_ &"Logssync.log""") _
Else Msgbox "Procédure annulée",Vbexclamation,"Annulation" _
End If
========= Couic ==============================
Dans le WshShell.Run j'avais testé les Chr(34) mais ca faisait pareil. Pas
d'erreur mais rien ne se passe. (peut être à cause du "On Error Resume Next"
que j'avais laissé).
Au final le destination_copie sera un chemin serveur, j'espère que le double
anti slash sera bien géré dans la chaine WshShell.Run.
Si une personne à le temps de se plonger dans mon monde .... :)
"Eric Galais" a écrit dans le message de news:u8R%
En phase de debugging, toujours mettre en commentaire la ligne de gestion des erreurs suivante : On Error Resume Next
C'est noté, j'ai copié bêtement car mon niveau actuel se résume à du légo avec des bouts de scripts et quelques recherches persos.
La déclaration "Set" permet de créer une instance d'un objet : Set oFS = CreateObject ("Scripting.FileSystemObject")
Je l'utilise aussi dans mon script , çà ca va.
Pour définir des variables : source_copie = "D:synchro"
Ca je le fais bien mais c'est bizard ca marche pas. Mon code entier est le suivant:
========= Couic ============================== On Error Resume Next Dim Install_ strComputer = "."
Set Reponse = Nulle Set Install_ = "c:program filesApaveNomad-Sync" set source_copie = "D:synchro" set destination_copie = "C:test"
Msgbox "Bienvenue dans l'outil de synchronisation Nomad-Sync",,"Nomad-Sync" Set ObjWMI = GetObject("winmgmts:" & strComputer & "rootcimv2") Set colItems = ObjWMI.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each objItem in colItems If Not IsNull(objItem.IPAddress) Then IP = objItem.IPAddress(IP) End If Next If Instr(1, IP , "130.1.") = 0 Then Msgbox "Votre PC n'est pas sur son site d'origine, il ne sera pas synchronisé",Vbcritical,"Hors site" Else Msgbox "Votre adresse IP est: " & IP , Vbinformation,"Vérification de localisation": _ Reponse=Msgbox ("Votre Pc est bien sur site, Voulez vous lancer la synchronisation de vos données?", _ Vbquestion+vbYesNo,"Synchronisation") End If 'WScript.Echo "pouet" & Install_ If Reponse= 6 Then _ WshShell.Run (Install_ & "robocopy.exe """ & Source_copie & """ """ & destination_copie & "%computername%"" /MIR /R:3 /W:10 /X /NP /LOG+:""" & Install_ &"Logssync.log""") _ Else Msgbox "Procédure annulée",Vbexclamation,"Annulation" _ End If ========= Couic ============================== Dans le WshShell.Run j'avais testé les Chr(34) mais ca faisait pareil. Pas d'erreur mais rien ne se passe. (peut être à cause du "On Error Resume Next" que j'avais laissé).
Au final le destination_copie sera un chemin serveur, j'espère que le double anti slash sera bien géré dans la chaine WshShell.Run.
Si une personne à le temps de se plonger dans mon monde .... :)
Merci d'avance.
Eric
Gilles LAURENT
"Eric Galais" a écrit dans le message de news:%
Bonjour Eric,
Ci-dessous le script corrigé :
--- Coupez ici : NomadSync.vbs ---
Option Explicit
' déclaration des variables Dim oSh, oWMI, oNetCard Dim colNetCards Dim strIPAddress, strCmd
' énumération des interfaces For Each oNetCard In colNetCards If Not IsNull (oNetCard.IPAddress) Then
' sauvegarde de l'adresse IP ' la dernière interface est prise en compte strIPAddress = Join (oNetCard.IPAddress)
End If Next
' détermination du site actuel If Instr (1, strIPAddress, "130.1.") = 0 Then
' la machine n'est pas sur son site Msgbox "Votre PC (" & _ strIPAddress & _ ") n'est pas sur son site d'origine. " & _ VBCrLf & _ "Il ne sera pas synchronisé.", _ VBCritical, _ "Hors site"
Else
' la machine est sur son site ' demande confirmation de l'utilisateur If _ Msgbox ("Votre PC (" & _ strIPAddress & _ ") est sur son site d'origine. " & _ VBCrLf & _ "Voulez vous lancer la synchronisation " & _ "de vos données ?", _ VBQuestion + VBYesNo, _ "Synchronisation") = VBYes _ Then
' énumération des interfaces
For Each oNetCard In colNetCards
If Not IsNull (oNetCard.IPAddress) Then
' sauvegarde de l'adresse IP
' la dernière interface est prise en compte
strIPAddress = Join (oNetCard.IPAddress)
End If
Next
' détermination du site actuel
If Instr (1, strIPAddress, "130.1.") = 0 Then
' la machine n'est pas sur son site
Msgbox "Votre PC (" & _
strIPAddress & _
") n'est pas sur son site d'origine. " & _
VBCrLf & _
"Il ne sera pas synchronisé.", _
VBCritical, _
"Hors site"
Else
' la machine est sur son site
' demande confirmation de l'utilisateur
If _
Msgbox ("Votre PC (" & _
strIPAddress & _
") est sur son site d'origine. " & _
VBCrLf & _
"Voulez vous lancer la synchronisation " & _
"de vos données ?", _
VBQuestion + VBYesNo, _
"Synchronisation") = VBYes _
Then
' énumération des interfaces For Each oNetCard In colNetCards If Not IsNull (oNetCard.IPAddress) Then
' sauvegarde de l'adresse IP ' la dernière interface est prise en compte strIPAddress = Join (oNetCard.IPAddress)
End If Next
' détermination du site actuel If Instr (1, strIPAddress, "130.1.") = 0 Then
' la machine n'est pas sur son site Msgbox "Votre PC (" & _ strIPAddress & _ ") n'est pas sur son site d'origine. " & _ VBCrLf & _ "Il ne sera pas synchronisé.", _ VBCritical, _ "Hors site"
Else
' la machine est sur son site ' demande confirmation de l'utilisateur If _ Msgbox ("Votre PC (" & _ strIPAddress & _ ") est sur son site d'origine. " & _ VBCrLf & _ "Voulez vous lancer la synchronisation " & _ "de vos données ?", _ VBQuestion + VBYesNo, _ "Synchronisation") = VBYes _ Then
' la synchro a été reportée par l'utilisateur Msgbox "Procédure annulée !", _ VBExclamation, _ "Annulation"
End If End If
--- Coupez ici : NomadSync.vbs ---
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Eric Galais
"Gilles LAURENT" a écrit dans le message de news:
"Eric Galais" a écrit dans le message de news:%
Bonjour Eric,
Ci-dessous le script corrigé :
--- Coupez ici : NomadSync.vbs --- [...]
--- Coupez ici : NomadSync.vbs ---
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Ca marche impécablement, merci Gilles. Je me pose une dernière question. Quand j'ai plusieurs cartes de référencées, genre connexion à un PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion 1394, j'aimerais insérer une autre condition que IPEnabled=True en plus.(DNSDomain qui n'est valable que pour la connexion LAN entreprise)
Je ne vois pas comment forcer la double vérification, j'ai pensé au "+" Dans ce cas de figure ca me génère une erreur sur le For qui suit.
Eric
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
uvQX3IW4GHA.3400@TK2MSFTNGP04.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23Vq6OEV4GHA.3400@TK2MSFTNGP04.phx.gbl
Bonjour Eric,
Ci-dessous le script corrigé :
--- Coupez ici : NomadSync.vbs ---
[...]
--- Coupez ici : NomadSync.vbs ---
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Ca marche impécablement, merci Gilles.
Je me pose une dernière question.
Quand j'ai plusieurs cartes de référencées, genre connexion à un PdaPhone
(je viens d'avoir le problème) ou quand tu as une connexion 1394, j'aimerais
insérer une autre condition que IPEnabled=True en plus.(DNSDomain qui n'est
valable que pour la connexion LAN entreprise)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Ca marche impécablement, merci Gilles. Je me pose une dernière question. Quand j'ai plusieurs cartes de référencées, genre connexion à un PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion 1394, j'aimerais insérer une autre condition que IPEnabled=True en plus.(DNSDomain qui n'est valable que pour la connexion LAN entreprise)
Je ne vois pas comment forcer la double vérification, j'ai pensé au "+" Dans ce cas de figure ca me génère une erreur sur le For qui suit.
Eric
Gilles LAURENT
"Eric Galais" a écrit dans le message de news:%
| Ca marche impécablement, merci Gilles.
Super ;-)
| Je me pose une dernière question. | Quand j'ai plusieurs cartes de référencées, genre connexion à un | PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion | 1394, j'aimerais insérer une autre condition que IPEnabled=True en | plus.(DNSDomain qui n'est valable que pour la connexion LAN | entreprise)
Note : L'interface doit avoir un suffixe DNS propre à la connexion de configuré sinon DNSDomain = Null !
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23ZQSbiX4GHA.3396@TK2MSFTNGP04.phx.gbl
| Ca marche impécablement, merci Gilles.
Super ;-)
| Je me pose une dernière question.
| Quand j'ai plusieurs cartes de référencées, genre connexion à un
| PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion
| 1394, j'aimerais insérer une autre condition que IPEnabled=True en
| plus.(DNSDomain qui n'est valable que pour la connexion LAN
| entreprise)
| Je me pose une dernière question. | Quand j'ai plusieurs cartes de référencées, genre connexion à un | PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion | 1394, j'aimerais insérer une autre condition que IPEnabled=True en | plus.(DNSDomain qui n'est valable que pour la connexion LAN | entreprise)
Note : L'interface doit avoir un suffixe DNS propre à la connexion de configuré sinon DNSDomain = Null !
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Eric Galais
"Gilles LAURENT" a écrit dans le message de news: OhBgt%
"Eric Galais" a écrit dans le message de news:%
| Ca marche impécablement, merci Gilles.
Super ;-)
| Je me pose une dernière question. | Quand j'ai plusieurs cartes de référencées, genre connexion à un | PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion | 1394, j'aimerais insérer une autre condition que IPEnabled=True en | plus.(DNSDomain qui n'est valable que pour la connexion LAN | entreprise)
Note : L'interface doit avoir un suffixe DNS propre à la connexion de configuré sinon DNSDomain = Null !
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Nickel.
J'avais testé le And mais comme suit: " Where IPEnabled=True" And "Where DNSDomain=Toto.com" De plus j'avais pas mis les " ' " sur la chaine.
Promis je t'embete plus jusqu'à demain.
Bonne soirée et encore merci
Eric
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
OhBgt%23X4GHA.2596@TK2MSFTNGP06.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23ZQSbiX4GHA.3396@TK2MSFTNGP04.phx.gbl
| Ca marche impécablement, merci Gilles.
Super ;-)
| Je me pose une dernière question.
| Quand j'ai plusieurs cartes de référencées, genre connexion à un
| PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion
| 1394, j'aimerais insérer une autre condition que IPEnabled=True en
| plus.(DNSDomain qui n'est valable que pour la connexion LAN
| entreprise)
"Gilles LAURENT" a écrit dans le message de news: OhBgt%
"Eric Galais" a écrit dans le message de news:%
| Ca marche impécablement, merci Gilles.
Super ;-)
| Je me pose une dernière question. | Quand j'ai plusieurs cartes de référencées, genre connexion à un | PdaPhone (je viens d'avoir le problème) ou quand tu as une connexion | 1394, j'aimerais insérer une autre condition que IPEnabled=True en | plus.(DNSDomain qui n'est valable que pour la connexion LAN | entreprise)