script vbs

Le
ephores
Bonjour,

Savez comment autoriser un script en VBS à écrire sur un dossier sous XP ?

Je m"explique j'ai fais un prog qui lui meme fais un script vbs , ce script
contient les commandes pour copier des fichier d'un endroit à un autre. Mon
problème est qu'à l'execution de ce VBS, j'ai ce message d'erreur : " erreur
: permission refusée ; code : 800A0046"
J'ai beau etre logué en admin, donner toutes les autorisation possible au
dossier cible, mais rien n'y fais, j'ai meme essayé un partage reseau avec
autorisation total à tous le monde.
Si quelqu'un à une idée.


Vous aller me dire; fais un bat au lieu du vbs, mais j'ai un autre problème
avec les bats, les " ç " devienne des Alpha une fois passé en ligne de
commande, si bien que j'ai le message : " fichier introuvable "

Si quelqu'un a une soluce je suis preneur ;-)

En tous cas merci d'avance de faire partager votre savoir.
  • Partager ce contenu :
Vos réponses Page 1 / 2
Trier par : date / pertinence
François Picalausa
Le #15287861
Hello,

Pourquoi ne pas effectuer la copie directement à partir du programme (VB?)
plutôt que de générer un script intermédiaire?

Pour un programme en VB, voir la faq:
http://faq.vb.free.fr/index.php?rubrique

Par scripting, tu peux employer le filesystemobject:
http://msdn.microsoft.com/library/en-us/script56/html/sgProgrammingFileSystemObject.asp
http://msdn.microsoft.com/library/en-us/script56/html/jsmthCopyFile.asp

Si ça ne fonctionne pas mieux, post un bout de code, peut-être que cela
pourra nous aider à cerner le problème!

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
Je m"explique j'ai fais un prog qui lui meme fais un script vbs , ce
script contient les commandes pour copier des fichier d'un endroit à
un autre. Mon problème est qu'à l'execution de ce VBS, j'ai ce
message d'erreur : " erreur
permission refusée ; code : 800A0046"


ephores
Le #15287831
Merci François !

losque j'utilise Filecopy j'ai un message d'erreur m'indiquant " une erreur
dans le chemin d'accès", je dois faire une erreur de syntaxe mais je ne vois
pas laquelle.Voici mon code :

******************

For i = 0 To List1.ListCount - 1

ligne = Trim(List1.List(i))
vers = Trim(List2.List(i))

FileCopy ligne, vers ' pourtant lorsque je pointe mon curseur sur
ligne et vers , j'optiens bien la bonne adresse

Next
******************

J'avais pensé au script ou au bat car pour pouvoir faire l'execution plus
tard, c'est à dire la programmé, mais c'est pas le plus important , si
j'arrive à le faire avec filecopy ça me convient, mais ne va - t - il pas me
poser des problème d'autorisation comme dans mon script?

"François Picalausa" news:
Hello,

Pourquoi ne pas effectuer la copie directement à partir du programme (VB?)
plutôt que de générer un script intermédiaire?

Pour un programme en VB, voir la faq:
http://faq.vb.free.fr/index.php?rubrique

Par scripting, tu peux employer le filesystemobject:



http://msdn.microsoft.com/library/en-us/script56/html/sgProgrammingFileSystemObject.asp
http://msdn.microsoft.com/library/en-us/script56/html/jsmthCopyFile.asp

Si ça ne fonctionne pas mieux, post un bout de code, peut-être que cela
pourra nous aider à cerner le problème!

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
> Je m"explique j'ai fais un prog qui lui meme fais un script vbs , ce
> script contient les commandes pour copier des fichier d'un endroit à
> un autre. Mon problème est qu'à l'execution de ce VBS, j'ai ce
> message d'erreur : " erreur
> permission refusée ; code : 800A0046"





François Picalausa
Le #15287821
Hello,

Est-ce que le dossier de destination existe? (VB ne copiera le fichier que
si le dossier de destination existe)
Est-ce que vers représente bien un fichier et non un dossier?

Tu peux effectuer les tests suivants sur tes path pour savoir ce qui ne va
pas:
Option Explicit

Private Sub Command1_Click()
Const src = "c:autoexec.bat"
Const dst = "e:mydatatest.toto"

If Not FolderExists(GetParentFolder(dst)) Then
MsgBox "Le dossier parent de la destination n'existe pas!"
Exit Sub
End If

If Not FileExists(src) Then
MsgBox "Le fichier source n'existe pas!"
Exit Sub
End If

If FolderExists(dst) Then
MsgBox "Un dossier porte le nom du fichier de destination!"
Exit Sub
End If

FileCopy src, dst
End Sub

Private Function FileExists(strPath As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(strPath) And vbDirectory) = 0)
End Function

Private Function FolderExists(strPath As String) As Boolean
On Error Resume Next
FolderExists = (GetAttr(strPath) And vbDirectory)
End Function

Private Function GetParentFolder(strPath As String) As String
GetParentFolder = Left$(strPath, InStrRev(strPath, ""))
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
Merci François !

losque j'utilise Filecopy j'ai un message d'erreur m'indiquant " une
erreur dans le chemin d'accès", je dois faire une erreur de syntaxe
mais je ne vois pas laquelle.Voici mon code :


ephores
Le #15287811
Merci de m'avoir répondu si vite !
effectivement " vers " pointe un dossier, comment faut il faire ?
je dois copier des fichiers vers un dossier.



"François Picalausa" news:%
Hello,

Est-ce que le dossier de destination existe? (VB ne copiera le fichier que
si le dossier de destination existe)
Est-ce que vers représente bien un fichier et non un dossier?

Tu peux effectuer les tests suivants sur tes path pour savoir ce qui ne va
pas:
Option Explicit

Private Sub Command1_Click()
Const src = "c:autoexec.bat"
Const dst = "e:mydatatest.toto"

If Not FolderExists(GetParentFolder(dst)) Then
MsgBox "Le dossier parent de la destination n'existe pas!"
Exit Sub
End If

If Not FileExists(src) Then
MsgBox "Le fichier source n'existe pas!"
Exit Sub
End If

If FolderExists(dst) Then
MsgBox "Un dossier porte le nom du fichier de destination!"
Exit Sub
End If

FileCopy src, dst
End Sub

Private Function FileExists(strPath As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(strPath) And vbDirectory) = 0)
End Function

Private Function FolderExists(strPath As String) As Boolean
On Error Resume Next
FolderExists = (GetAttr(strPath) And vbDirectory)
End Function

Private Function GetParentFolder(strPath As String) As String
GetParentFolder = Left$(strPath, InStrRev(strPath, ""))
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
> Merci François !
>
> losque j'utilise Filecopy j'ai un message d'erreur m'indiquant " une
> erreur dans le chemin d'accès", je dois faire une erreur de syntaxe
> mais je ne vois pas laquelle.Voici mon code :




François Picalausa
Le #15287801
Hello,

Essaye ceci:
Private Sub Command1_Click()
Const src = "c:autoexec.bat"
Const dst = "e:mydata"

FileCopy src, dst & GetFileName(src)
End Sub

'Retrouve la partie nom de fichier à partir d'un path
'(partie suivant le dernier backslash)
Private Function GetFileName(strPath As String)
GetFileName = Mid$(strPath, InStrRev(strPath, "") + 1)
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
Merci de m'avoir répondu si vite !
effectivement " vers " pointe un dossier, comment faut il faire ?
je dois copier des fichiers vers un dossier.


François Picalausa
Le #15287791
Hello,

En fonction du type d'entrée (utilisateur, constante, ...), on peut
effectuer des tests supplémentaires pour s'assurer que la copie se passe au
mieux:

Private Sub Command1_Click()
Const src = "c:autoexec.bat"
Const dst = "e:mydata"

FileCopy src, NormalizePath(dst) & GetFileName(src)
End Sub

'Retrouve la partie nom de fichier à partir d'un path
'(partie suivant le dernier backslash)
Private Function GetFileName(strPath As String)
GetFileName = Mid$(strPath, InStrRev(strPath, "") + 1)
End Function

'Si le path n'est pas un fichier
'et ne se termine pas par
'on ajoute
Private Function NormalizePath(strPath As String) As String
If Right$(strPath, 1) = "" Or FileExists(strPath) Then
NormalizePath = strPath
Else
NormalizePath = strPath & ""
End If
End Function

Private Function FileExists(strPath As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(strPath) And vbDirectory) = 0)
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
ephores
Le #15287681
Merci François , mais ça ne marche pas,
si je mets : Const src = ligne
il me mets " Constante requise "
la source et la destination n'est jamais la meme.

C'est si compliqué en VB de copier un fichier dans un dossier ? je ne
croyais pas ce language si casse-tête.
En tout cas merci je vais continué à chercher.



"François Picalausa" news:%
Hello,

En fonction du type d'entrée (utilisateur, constante, ...), on peut
effectuer des tests supplémentaires pour s'assurer que la copie se passe


au
mieux:

Private Sub Command1_Click()
Const src = "c:autoexec.bat"
Const dst = "e:mydata"

FileCopy src, NormalizePath(dst) & GetFileName(src)
End Sub

'Retrouve la partie nom de fichier à partir d'un path
'(partie suivant le dernier backslash)
Private Function GetFileName(strPath As String)
GetFileName = Mid$(strPath, InStrRev(strPath, "") + 1)
End Function

'Si le path n'est pas un fichier
'et ne se termine pas par
'on ajoute
Private Function NormalizePath(strPath As String) As String
If Right$(strPath, 1) = "" Or FileExists(strPath) Then
NormalizePath = strPath
Else
NormalizePath = strPath & ""
End If
End Function

Private Function FileExists(strPath As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(strPath) And vbDirectory) = 0)
End Function

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net





François Picalausa
Le #15287661
Hello,

Les constantes n'étaient là que parce qu'il s'agit d'un exemple et que le
remplissage de variables n'était pas le point important!
Dans ton projet, ça devrait donner:
For i = 0 To List1.ListCount - 1

ligne = Trim(List1.List(i))
vers = Trim(List2.List(i))

FileCopy ligne, NormalizePath(vers) & GetFileName(ligne)
Next

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
si je mets : Const src = ligne
il me mets " Constante requise "
la source et la destination n'est jamais la meme.


ephores
Le #15287651
voila l'erreur que j'ai à la compilation à la ligne :

FileCopy ligne, NormalizePath(vers) & GetFileName(ligne)

'type d'argument " byref" incompatible , vers est en surbrillance.

"François Picalausa" news:
Hello,

Les constantes n'étaient là que parce qu'il s'agit d'un exemple et que le
remplissage de variables n'était pas le point important!
Dans ton projet, ça devrait donner:
For i = 0 To List1.ListCount - 1

ligne = Trim(List1.List(i))
vers = Trim(List2.List(i))

FileCopy ligne, NormalizePath(vers) & GetFileName(ligne)
Next

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ephores" news:
> si je mets : Const src = ligne
> il me mets " Constante requise "
> la source et la destination n'est jamais la meme.




ephores
Le #15287611
j'ai trouvé une soluce pour le problème du bat,
losque le nom du fichier comporte un " ç " le programme renomme le fichier
en remplaçant le " ç " par des "c"
voici le code pour ceux que ça interesse :

chemin = File1.Path & "" & File1.FileName

If InStr(File1.FileName, "ç") Then
newchemin = Replace(chemin, "ç", "c")
Name chemin As newchemin
Else
newchemin = chemin
End If


List1.AddItem (newchemin)





"ephores" news:
Bonjour,

Savez comment autoriser un script en VBS à écrire sur un dossier sous XP ?

Je m"explique j'ai fais un prog qui lui meme fais un script vbs , ce


script
contient les commandes pour copier des fichier d'un endroit à un autre.


Mon
problème est qu'à l'execution de ce VBS, j'ai ce message d'erreur : "


erreur
: permission refusée ; code : 800A0046"
J'ai beau etre logué en admin, donner toutes les autorisation possible au
dossier cible, mais rien n'y fais, j'ai meme essayé un partage reseau


avec
autorisation total à tous le monde.
Si quelqu'un à une idée....


Vous aller me dire; fais un bat au lieu du vbs, mais j'ai un autre


problème
avec les bats, les " ç " devienne des Alpha une fois passé en ligne de
commande, si bien que j'ai le message : " fichier introuvable "

Si quelqu'un a une soluce je suis preneur ;-)

En tous cas merci d'avance de faire partager votre savoir.




Poster une réponse
Anonyme