Probléme pour lancer un script via le réseau

Signaler
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008
-
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008
-
Bonjour a tous et a toutes !

Voila, j'ai mon script en .vbs qui fait des traitements sur des fichiers placés sur mon serveur, mon pb est que je ne peux lancer ce script que sur la machine serveur (physiquement), si je le lance via un client du réseau, j'ai l'erreur "Disque non prêt".

Si qqun a une idée.. je peux fournir le script si besoin.

Merci !!

14 réponses

Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
sans le script, ca va etre chaud pour t'aider !!
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

lol :)

Option Explicit
Const ForReading = 1
Dim objFso, objDicoID, objDicoFiles
Dim strPath, strFile, strFicTxt, strPathDest
Dim strResult,  i, j, k
ReDim arrFiles(0)

strPath = "E:\Atome\Fabrication\fab-Traitement ouvrages"
strPathDest = "E:\Atome\Fabrication\fab-Commandes\cdes Augustin\Commande 2008\test"
strFile = ".\id.txt"

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objDicoID = CreateObject("Scripting.Dictionary")
Set objDicoFiles = CreateObject("Scripting.Dictionary")
'
'Dictionnaire contenant les ID supérieures à 6000
objDicoID = FnReadFileTxt(objDicoID, strPath & strFile)

'Dictionnaire contenant les fichiers contenant
'"Ouvrage_" dans le nom"
Call CreateFilesList(objFso.GetFolder(strPath))

'Transformation du dictionnaire des fichiers en tableau
Dim elements
elements = objDicoFiles.Items
For i=0 To objDicoFiles.Count-1
    arrFiles(UBound(arrFiles)) = elements(i)
    ReDim Preserve arrFiles(UBound(arrFiles) + 1)
Next

'----------
Dim strList
For j=0 To UBound(objDicoID)-1
    'MsgBox Join(arrFiles,vbCr)
    strResult = Filter(arrFiles, objDicoID(j))
    If UBound(strResult) >= 0 Then
       For k=0 To UBound(strResult)
           objFso.CopyFile strResult(k), strPathDest & "" & Mid(strResult(k), InstrRev(strResult(k), "") + 1)
           'strList = strList &vbcr& strPathDest & "" & Mid(strResult(k), InstrRev(strResult(k), "") + 1)
       Next
    End If
Next

Set objFso = Nothing
Set objDicoID = Nothing
Set objDicoFiles = Nothing
MsgBox "Traitement términé ! Penser à vider le dossier aprés avoir copié les fichiers sur le FTP",,"Fichiers disponibles"

'=========================
Private Function FnReadFileTxt(objDicoID, argFile)
   Dim objFile, strLine, cpt_ID
   'lecture fichier + création dictionnaire
   Set objFile = objFso.OpenTextFile(argFile, ForReading)
   cpt_ID = 0

   Do while not objFile.AtEndOfStream
      strLine = objFile.ReadLine
      If strLine >= 8000 Then
           objDicoID.Add cpt_ID, Trim(strLine) & "."
         cpt_ID = cpt_ID + 1
      End If
   Loop
   objFile.Close
   Set objFile = Nothing
   FnReadFileTxt = objDicoID.Items                 
                   
End function
'=========================
Sub CreateFilesList(argFolder)
    Dim objFile, subFolder
    For Each objFile In argFolder.Files
                If (LCase(Left(objFile.Name,8)) "ouvrage_" Or LCase(Left(objFile.Name,5)) "couv_" Or LCase(Left(objFile.Name,6)) = "flyer_") And _
                UCase(objFso.GetExtensionName(objFile.Path)) = "PDF" Then
            Set objDicoFiles(objFile.Path) = objFile'        If LCase(Left(objFile.Name,8)) "ouvrage_" Or LCase(Left(objFile.Name,5)) "couv_" Then'           If LCase(Right(objFile.Name,4)) ".pdf" Or LCase(Right(objFile.Name,4)) ".PDF" Then
'                   Set objDicoFiles(objFile.Path) = objFile
'           End if       
'        End if
        End if
    Next
    For Each subFolder In argFolder.SubFolders
        Call CreateFilesList(subFolder)
    Next
End Sub
  
  
  
  
  
  
  
  
  
  
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Et ou se porduit ton erreur ? sur quelle ligne ?
Le disque E:\ est un disque local à la machine ? local au serveur ? un mappage vers un partage du serveur ? as-tu bien tous les accès nécessaire dans ce cas ?
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
et puis dans cette ligne ...
objDicoID = FnReadFileTxt(objDicoID, strPath & strFile)
... ne peut de toute façon pas te donner un nom de fcheir correct à mon avis ?
car :
strPath = "E:\Atome\Fabrication\fab-Traitement ouvrages"
strFile = ".\id.txt"

Donc ca te donne un chemin du genre
"E:\Atome\Fabrication\fab-Traitement ouvrages.\id.txt"

Le "." après "ouvrages" me choque ! pas toi ?
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

ba il fait mon traitement en locale, mais si a la place de E: qui est le disque locale, je met un lecteur réseau mapé par exemple, il me dit "disk non pret" et si je laisse E: et que je le lance via le reséau idem..
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
pb de droit d'accès sans doute !
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

j'ai tous les droits en admin..

tu vois si je fais ca :
strPath = "Y:\Fabrication\fab-Traitement ouvrages"
strPathDest = "Y:\Fabrication\fab-Commandes\cdes Augustin\Commande 2008\test"
strFile = "\id.txt"

Y: étant un lecteur réseau de ma sation, c'est lentttttttttttttttttttttttttttt lol, la je l'ai lancé depuis 8 min j'ai toujours rien.. (à peine 2 min en locale)
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

voilà il a terminer ! 30 min !!
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Et si tu accèdes aux fichiers de Y via l'exploratur Windows, ca répond bien ?
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

oui parfaitement .
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

donc tous cela m'oblige à dire à la secrétaire qui lance ce fichier de se connecter via vnc sur le serveur pour lancer le fichier en locale...
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Non .. cela devrait fonctionner normalement ! je vais éplucher un peu ton script et voir ce qui pourrait clocher ?
En attendant, peux-tu faire un test avec un autre serveur et un autre poste client ?
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

ok merci !

je ferais le test demain matin mais je pense pas que cela change grand chose, je sui sur une bonne machine, je te tiens au courant !
Messages postés
31
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
5 mars 2008

re, :)

j'ai fait le test sur un autre poste c'est la même chose, ca fonctionne mais ca met 30min via le réseau contre 2 min en locale :s
je ne pense pas que ce soit le code quoi soit mal écrit..