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
Partager