Bonjour,

J'ai rédigé une procédure qui permet de déplacer des fichiers vers un NAS.

Mon serveur : Windows Serveur 2012
P : répertoire partagé du serveur où se trouvent les fichiers

Mon NAS : Synology
répertoire cible du NAS accessible par le serveur : \\192.168.1.167\Documents disponibles\


Ma tache lancée par le planificateur : Tache.bat
Mon script lancé par ma tache : Script.vbs


Au début, ce que j'avais était simplement une copie :
xcopy "P:\DOCUMENTS-A-TRANSFERER" "\\192.168.1.167\Documents disponibles\" /e /i /c /y

Cela fonctionne très bien sauf que lorsqu'il y a des fichiers raccourcis, les utilisateurs du NAS voient un raccourcis inutilisable et pas le fichier attendu (cible du raccourci)


J'ai donc créé le fameux script.vbs qui :
- Analyse l'extension des fichiers, et si c'est un lnk, il copie la cible dans "c:\script\DOCUMENTS-A-TRANSFERER"
- Copie la liste des fichiers présents sous "c:\script\DOCUMENTS-A-TRANSFERER" dans "P:\DOCUMENTS-A-TRANSFERER" "\\192.168.1.167\Documents disponibles\"
- Supprime les fichiers lnk dans : "P:\DOCUMENTS-A-TRANSFERER" "\\192.168.1.167\Documents disponibles\"

ce script est lancé dans mon fichier bat par la commande Start "" C:\scripts\Scripts.vbs"


Connecté en admin sur le serveur :
- lorsque je lance Tache.bat manuellement : Tout est ok
- lorsque je lance ma tache planifiée avec option "l'utilisateur doit être connecté" : Tout est ok
- lorsque je lance la tache avec l'option utilisateur n'est pas obligé d'être connecté : C'est KO. La partie contenue dans le fichier vbs n'est pas réalisée mais la partie xcopy oui

Au début, je pensais que c'était un problème d'accès aux ressources mais si le xcopy fonctionne... pourquoi le reste ne fonctionnerait pas?



Voici le contenu de mon script

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
On Error Resume Next
Set objShell = WScript.CreateObject("WScript.Shell" )
Path25 =  "P:\DOCUMENTS-A-TRANSFERER" 
 
 
Set f = fso.GetFolder(Path25)
Set fc = f.Files
For Each f1 in fc
   If (fso.GetExtensionName(f1) = "lnk" ) Then
Set myShortcut = objShell.CreateShortcut(f1.path)
fso.CopyFile myShortcut.TargetPath, "c:\script\DOCUMENTS-A-TRANSFERER\"
 
 
 
txt=f1.name
x=Len(txt)
y=Len(fso.GetExtensionName(f1))
txtdes= (Left(txt,x-12-y)) & "." & fso.GetExtensionName(myShortcut.TargetPath)
 
 
 
Set fso2 = CreateObject ("Scripting.FileSystemObject")
Fichier = myShortcut.TargetPath
basename=fso2.GetFileName(Fichier)
revpos=InStr(StrReverse(basename), ".")
noextname=Left(basename,Len(basename)-revpos)
 
T1= "C:\scripts\PEC patient\BASES\PAH\LUTIN AS\" & basename 
T2= "C:\scripts\PEC patient\BASES\PAH\LUTIN AS\" & txtdes
fso.MoveFile T1,T2
 
 End If
Next

Qui a une idée?

Par avance, je vous remercie de vos réponses

Gwen