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

un probleme avec WScript.Shell

4 réponses
Avatar
merlin01fr
Bonjour

je me heurte la tete violament depuis deux jour sur une ligne de code
qui me renevoie deseperement le message suivant dans un fichier nommé du
mois en cours (fevrier) :

Erreur en entr‚e: Pas d'extension de fichier dans
"c:ScriptsExtractionReleve-Inventaire-VbsParc".

je me doute que ca vient certainement d'un probleme de syntaxe

Code:


Set WshShell = WScript.CreateObject("WScript.Shell")

Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo " &
SousRepDeBaseRIVbs & _
FichierTrouve & " >" & SousRepDeBaseCsv & MonExtractionDuMois & _
" " & year(now) & " - " & NomDuParc & " - " & MonNomDeClass & ".csv")


par contre si je lui donne une autre syntaxe du style

Code:


Set MonRICsv = fso.CreateTextFile(SousRepDeBaseCsv & "\" & "Methode fso " &
MonExtractionDuMois & " " & year(now) & " - " & NomDuParc & " - " & _
MonNomDeClass & ".csv", True)


Alors la mes fichiers csv sont generes (ils sont vide mais crees)

pitie je craque

Cordialement

4 réponses

Avatar
merlin01fr
ok j'ai trouve tout seul comme un grand

la bonne syntaxe pour ceux que ca interesse est :

Set WshShell = WScript.CreateObject("WScript.Shell")

Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo " &
SousRepDeBaseRIVbs & _
chr(34) & MonFichierEnteteReconstitue & chr(34) & chr(32) & ">" & _
SousRepDeBaseCsv & chr(34) & MonExtractionDuMois & _
chr(32) & year(now) & chr(32) & "-" & chr(32) & NomDuParc & _
chr(32) & "-" & chr(32) & MonNomDeClass & chr(34) & ".csv")

le chr(34) pour les guillemets
et le chr(32) pour les espaces

Merci pour votre aide

Cordialement
Avatar
Jacques Barathon [MS]
Bravo pour ta persévérance, et merci pour le retour d'expérience.

Jacques

"merlin01fr" wrote in message
news:
ok j'ai trouve tout seul comme un grand

la bonne syntaxe pour ceux que ca interesse est :

Set WshShell = WScript.CreateObject("WScript.Shell")

Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo " &
SousRepDeBaseRIVbs & _
chr(34) & MonFichierEnteteReconstitue & chr(34) & chr(32) & ">" & _
SousRepDeBaseCsv & chr(34) & MonExtractionDuMois & _
chr(32) & year(now) & chr(32) & "-" & chr(32) & NomDuParc & _
chr(32) & "-" & chr(32) & MonNomDeClass & chr(34) & ".csv")

le chr(34) pour les guillemets
et le chr(32) pour les espaces

Merci pour votre aide

Cordialement


Avatar
jbongran
merlin01fr wrote:
ok j'ai trouve tout seul comme un grand

la bonne syntaxe pour ceux que ca interesse est :

Set WshShell = WScript.CreateObject("WScript.Shell")

Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo " &
SousRepDeBaseRIVbs & _
chr(34) & MonFichierEnteteReconstitue & chr(34) & chr(32) & ">" & _
SousRepDeBaseCsv & chr(34) & MonExtractionDuMois & _
chr(32) & year(now) & chr(32) & "-" & chr(32) & NomDuParc & _
chr(32) & "-" & chr(32) & MonNomDeClass & chr(34) & ".csv")

le chr(34) pour les guillemets
et le chr(32) pour les espaces

Merci pour votre aide

Cordialement


Tes Chr(32) étant toujours avant et après une chaine, pourquoi ne pas mettre
les espaces dans celle-ci ?
Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo "
&SousRepDeBaseRIVbs & _
chr(34) & MonFichierEnteteReconstitue & chr(34) & " > " & _
SousRepDeBaseCsv & chr(34) & MonExtractionDuMois & _
chr(32) & year(now) & " - " & NomDuParc & _
" - " & MonNomDeClass & chr(34) & ".csv")

En plus pour les chemins contenants des espaces, il suffit d'encadrer toute
la chaine avec des double guillemets
au lieu de
C:"Program Files""Mon document".txt (ce qui semble être le cas dans ton
code)
écrire
"C:Program FilesMon document.txt"
C'est plus lisible et moins source d'erreur
Tu peux aussi faire appel a une routine mettant les guillemets autour de la
chaine:
Function Quote(str2Quote)
Quote = """" & str2Quote & """"
End Function

MaChaineSansQuotes = C:Program FilesMon document.txt
MaChaineAvecQuote = Quote MaChaineSansQuotes
Wscript.Echo "MaChaineSansQuotes: " & MaChaineSansQuotes
WScript.Echo "MaChaineAvecQuote: " & MaChaineAvecQuote

Avatar
jbongran
merlin01fr wrote:
ok j'ai trouve tout seul comme un grand

la bonne syntaxe pour ceux que ca interesse est :

Set WshShell = WScript.CreateObject("WScript.Shell")

Set ExtractEnteteCsv = WshShell.exec ("cmd /c Cscript /nologo " &
SousRepDeBaseRIVbs & _
chr(34) & MonFichierEnteteReconstitue & chr(34) & chr(32) & ">" & _
SousRepDeBaseCsv & chr(34) & MonExtractionDuMois & _
chr(32) & year(now) & chr(32) & "-" & chr(32) & NomDuParc & _
chr(32) & "-" & chr(32) & MonNomDeClass & chr(34) & ".csv")

le chr(34) pour les guillemets
et le chr(32) pour les espaces

Merci pour votre aide

Cordialement


J'oubliait aussi pour le cmd /c ou cmd /k que je voit assez souvent dans les
scripts (exec ou run le plus souvent), il serait plus judicieux,
soit de mettre le chemin complet de cmd.exe ainsi que son extension (.exe)
ou alors de remplacer cmd par %COMSPEC% qui fera exactement la mêm chose, à
savoir donner le chemin complet de cmd.exe...