Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Impossible d'executer cette commande via vbs , mais ok via cmd ?

1 réponse
Avatar
Florent G.
Bonjour,
je dois faire un script aux caracteristiques suivantes :

l'utilisteur précise un dossier dans lequel doivent se trouver des fichiers
"*.xml"
Ensuite, une boucle est faite pour transformer le conten ude chaque xml en
csv et réunir tous els résultats dans 1 unique fichie de sortie *.csv

J'utilise pour cela, un outil appelé "MSXSL.EXE" auquel e passe en parametre
le fichier xml à traiter et le fichier xsl de transformation permettant
d'effectuer le mapping.

Dans le code ci-dessous, tout semble ok, mais le csv fina ln'est jamais
généré (alors que si je copie/colle dans cmd.exe la ligne de comande censée
etre exécutée par mon script, tout est ok...)

Nb : la ligne de ocmmande générée se retrouve dans l'event viewer

Merci de votre aide, j'ai besoin de cet outil cet apres midi pour me sauver
la vie ;-))

============= DEBUT SCRIPT ==============

SystemLogging = "yes" 'Enable system logging to envent viewer ? "yes" or "no"

Function B(Msg)
On Error Resume Next
Dim a,f,i,w
Set a=WScript.CreateObject("Shell.Application")
Set w=CreateObject("WScript.Shell")

Set f=a.BrowseForFolder(&H0&,Msg,&h1&)
B=f.ParentFolder.ParseName(f.Title).Path

If Err.Number<>0 Then
B=Null
If f.Title="Desktop" Then B=w.SpecialFolders("Desktop")
i=InStr(f.Title, ":")
If i>0 Then B=Mid(f.Title,i-1,2) & "\"
End If
End Function

S=B("Choisissez le répertoire contenant les fichiers XML à traiter")

If IsNull(S) Then
MsgBox "Sélection invalide."
wsh.Quit()
End If

' Boucle sur tous les fichiers XML du dossier sélectionné
Dim NbrFichiersTraites, objShell
Set fso = CreateObject ("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
Set dossier = fso.GetFolder(S)
NbrFichiersTraites = 0
For Each fichier In dossier.Files
If fso.GetExtensionName(fichier.Name)="xml" Then
MsgBox "Traitement du fichier : " & S & "\" & fichier.Name
NbrFichiersTraites = NbrFichiersTraites+1
' Lancement de la commande de conversion de XML vers CSV
CommandExecutee = "C:\MSXSL.EXE """ & S & "\" & fichier.Name & """
C:\R07.xsl >> C:\R07.CSV"
If SystemLogging = "yes" Then
objShell.LogEvent 4, CommandExecutee
End If
objShell.run CommandExecutee
End If
Next
MsgBox "Nombre total de fichiers traités : " & NbrFichiersTraites

============= FIN SCRIPT ==============


Florent

1 réponse

Avatar
François Rivierre
...
End If
objShell.run CommandExecutee
End If
Next
...


Est-ce que ça marche en remplaçant "objShell.run CommandExecutee" par
"objShell.ShellExecute CommandeExecutee, "", "", "open", 1" ?

François Rivierre