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

[VBS] Run sur un chemin relatif?

6 réponses
Avatar
tibule
Bonjour à tous.

Je m'amuse (enfin là ça ne m'amuse plus du tout..;) à écrire une série
de 3 scripts destinés à transformer un dossier de photos en gallerie.
Le premier script agit sur ImageMagick (soft en ligne de commande)
pour redimensionner les JPG d'origines en taille intermédiaire et en
thumbails, le deuxième crée l'index.html et le troisième les pages
html correspondant aux photos réduites à la taille intermédiaire.

------------------ Premier script:

'-------------------------------------------------------------------------------------------
Set oShell = WScript.CreateObject ("WSCript.shell")

set img = CreateObject("ImageMagickObject.MagickImage.1")
set fso = CreateObject("Scripting.FileSystemObject")
'---------- D'abord une boucle pour connaître le nbre de JPG
Set oFolder=fso.GetFolder("./.")
WScript.Echo oFolder
nbA=0 'compteur des JPG de base
For Each fileA In oFolder.files
If Not fso.GetExtensionName(fileA)="vbs" Then
WScript.Echo fileA.Name& " est JPG"
nbA=nbA+1
End If
Next
WScript.Echo "nbA=",nbA 'nombre de JPG
convertion

Sub convertion
set files = fso.GetFolder(".").Files
nbB=0 'compteur des JPG traités


for each file in files
WScript.Echo "nbB=",nbB
WScript.Echo "file=",file
If nbB=nbA Then ' si on a atteint le nombre des JPG de base > fin
WScript.Echo"++ nbB=nbA > lance script de gallerie et stop"

WScript.Echo "démarrage script page 800"
oShell.Run "../scripts/gallerieD-02.1.vbs",1,TRUE
WScript.Echo "démarré"

WScript.Sleep(2000)
WScript.Quit(0)
End If


If Not fso.GetExtensionName(file)="vbs" Then 'ne pas prendre en
compte le script
'convertion des images:
nbB=nbB+1
img.Convert file.name, "-resize", "639x479", "inter_" & file.name
fso.MoveFile "inter_" & file.name ,"../inter\"
img.Convert file.name, "-resize", "200x149", "thm_" & file.name
fso.MoveFile "thm_" & file.name ,"../thmb\"
End If
Next
End Sub
-------------------------------------------

J'ai des problème au niveau du lancement du deuxième script par le
premier. Ca marche très bien quand je l'exécute dans mon éditeur
(Primalscript), mais quand je le lance directement il bloque à

oShell.Run "../scripts/gallerieD-02.1.vbs",1,TRUE

sans message d'erreur.

Ca marche si je change l'hôte CSCRIPT pour WSCRIPT mais alors il y a
trop de boites de messages dans les scripts d'écriture html.


Merci d'avance pour votre aide éventuelle - Moi j'abandonne :)


Christophe

6 réponses

Avatar
Jacques Barathon [MS]
As-tu essayé d'écrire le chemin avec des "" plutôt que des "/"?

Sinon, je sais que ça ne résoudra pas ton problème de vbs, mais en voyant
ton besoin je me suis amusé (enfin, jusqu'à présent ça m'amuse :-)) à écrire
qq chose du même genre en PowerShell:

--- couper ici ---
# new-album.ps1
#
# Crèe un album d'images
#
# Usage: new-album -source répertoire -dest répertoire [-filtre
*.jpg,*.bmp,...] [-largeur x] [-hauteur y]
#
# -source est le répertoire où les images doivent être présentes
# -dest est le répertoire où seront créés l'album et les miniatures
# -filtre précise quels fichiers doivent être inclus (*.jpg par défaut)
# -largeur est la largeur des miniatures en pixels (200 par défaut)
# -hauteur est la hauteur des miniatures en pixels (149 par défaut)
#
# L'album est constitué d'un fichier album.htm qui affiche toutes les
miniatures
# et les lie à leur image d'origine.
#

param (
$source = (get-location).path,
$dest = (get-location).path,
$filtre = "*.jpg",
$largeur = 200,
$hauteur = 149
)

[reflection.assembly]::LoadWithPartialName("System.Drawing")>$null

$album = "<html>`n"
set-location $source
$images = gci $filtre
$images | foreach {
$imgfullname = $_.fullname
$imgbasename = [IO.Path]::GetFileNameWithoutExtension($_.fullname)
$thumbfullname = "$destthm_$($_.name)"
$image=new-object System.Drawing.Bitmap($imgfullname)
$thumb=$image.GetThumbnailImage($largeur,$hauteur,$null,0)
$thumb.Save($thumbfullname)
$thumb.Dispose()
$image.Dispose()
$album += "<a href='$imgfullname'>"
$album += "<img src='$thumbfullname' width='$largeur' height='$hauteur'
alt='$imgbasename'>"
$album += "</a>`n"
}
$album += "</html>"
$album | out-file $destalbum.htm
--- couper ici ---

Les explications sont fournies en tête du script. Je n'ai fait que des tests
basiques, et j'ai un souci avec l'affichage des miniatures (elles sont
visibles dans l'Explorateur mais pas dans la page album.htm) mais c'est déjà
une bonne base que je voulais partager au cas où. Je regarderai le problème
d'affichage plus tard ce soir.

Jacques

"tibule" a écrit dans le message de news:

Bonjour à tous.

Je m'amuse (enfin là ça ne m'amuse plus du tout..;) à écrire une série
de 3 scripts destinés à transformer un dossier de photos en gallerie.
Le premier script agit sur ImageMagick (soft en ligne de commande)
pour redimensionner les JPG d'origines en taille intermédiaire et en
thumbails, le deuxième crée l'index.html et le troisième les pages
html correspondant aux photos réduites à la taille intermédiaire.

------------------ Premier script:

'-------------------------------------------------------------------------------------------
Set oShell = WScript.CreateObject ("WSCript.shell")

set img = CreateObject("ImageMagickObject.MagickImage.1")
set fso = CreateObject("Scripting.FileSystemObject")
'---------- D'abord une boucle pour connaître le nbre de JPG
Set oFolder=fso.GetFolder("./.")
WScript.Echo oFolder
nbA=0 'compteur des JPG de base
For Each fileA In oFolder.files
If Not fso.GetExtensionName(fileA)="vbs" Then
WScript.Echo fileA.Name& " est JPG"
nbA=nbA+1
End If
Next
WScript.Echo "nbA=",nbA 'nombre de JPG
convertion

Sub convertion
set files = fso.GetFolder(".").Files
nbB=0 'compteur des JPG traités


for each file in files
WScript.Echo "nbB=",nbB
WScript.Echo "file=",file
If nbB=nbA Then ' si on a atteint le nombre des JPG de base > fin
WScript.Echo"++ nbB=nbA > lance script de gallerie et stop"

WScript.Echo "démarrage script page 800"
oShell.Run "../scripts/gallerieD-02.1.vbs",1,TRUE
WScript.Echo "démarré"

WScript.Sleep(2000)
WScript.Quit(0)
End If


If Not fso.GetExtensionName(file)="vbs" Then 'ne pas prendre en
compte le script
'convertion des images:
nbB=nbB+1
img.Convert file.name, "-resize", "639x479", "inter_" & file.name
fso.MoveFile "inter_" & file.name ,"../inter"
img.Convert file.name, "-resize", "200x149", "thm_" & file.name
fso.MoveFile "thm_" & file.name ,"../thmb"
End If
Next
End Sub
-------------------------------------------

J'ai des problème au niveau du lancement du deuxième script par le
premier. Ca marche très bien quand je l'exécute dans mon éditeur
(Primalscript), mais quand je le lance directement il bloque à

oShell.Run "../scripts/gallerieD-02.1.vbs",1,TRUE

sans message d'erreur.

Ca marche si je change l'hôte CSCRIPT pour WSCRIPT mais alors il y a
trop de boites de messages dans les scripts d'écriture html.


Merci d'avance pour votre aide éventuelle - Moi j'abandonne :)


Christophe












Avatar
~Jean-Marc~ [MVP]
Salutations tibule, tu nous disais :
Je m'amuse (enfin là ça ne m'amuse plus du tout..;) à écrire une série
de 3 scripts destinés à transformer un dossier de photos en gallerie.


Euh, si c'est dans le but de jouer avec du script, ne lis pas la suite...

Webthumb te fera tout ça facilement :
http://www.phobosoft.ch/index.php?option=com_docman&task=doc_download&gid=9&Itemid&

@+

--
~Jean-Marc~ MVP Shell/User Fr
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -

Avatar
tibule
Le Sun, 27 Aug 2006 18:26:49 +0200, "Jacques Barathon [MS]"

As-tu essayé d'écrire le chemin avec des "" plutôt que des "/"?

Sinon, je sais que ça ne résoudra pas ton problème de vbs, mais en voyant
ton besoin je me suis amusé (enfin, jusqu'à présent ça m'amuse :-)) à écrire
qq chose du même genre en PowerShell:



PowerShell ? Tu veux que je me mette au PowerShell à trois jours de ma
rentrée ? ;))) Et d'abord c'est quoi ce machin? ;)))

Jusqu'ici je ne connais que le vbs (juste un peu et n'importe
comment)

En tout cas c'est très sympa, merci beaucoup pour ton effort :).
Le but du jeu c'était de jouer "avec du code" (comme dit Jean-Marc) -
mais aussi de me faire mon appli sur mesure car les softs que j'avais
trouvés tout faits ne me plaisaientt pas trop, notamment je voulais un
format intermédiaire (en plus des vignettes), donc trois formats en
tout, et pas de redimensionnement 'à la volée" qui fait un affichage
trop lent à mon goût.
En cherchant bien je pense que je pourrais trouver mais je me suis
naturellement pris au jeu. Ca faisait longtemps que je n'avais pas eu
le temps de bidouiller. En fait ça marche impec en l'état mais il faut
lancer séparément le deuxième script (gallerie de vignettes) qui lui
envoie le troisième (pages html avec images réduites en 639x479 + la
navigation)
J'aimerais tout de même comprendre pourquoi le .Run du premier script
marche sous l'éditeur PrimalScript et pas quand je lance ce premier
script à la main. C'est rageant de buter sur ce qui doit être une
broutille. Ca a peut-être quelque chose à voir avec Convert.exe .
J'ai essayé img.Close mais j'ai un message d'erreur.

Non, il doit aussi y avoir une histoire avec les chemins relatifs
entre script qui lance et script cible. si un run est lancé à
l'intérieur d'un script qui lui-même a été lancé dans un autre, il y a
pleins de chemins à vérifier... Je devrais donc utiliser des chemins
absolus, et donc les créer au cours d'un genre de setup?

Des limites de l'autodidactie... Et il faut vraiment que je prépare ma
rentrée, là ;)

A+ et encore merci. L'été prochain j'attaque le C et le php ;)

Christophe

Avatar
JF
*Bonjour tibule* !
(news:)

Je crois que tu es concerné ici :
"Mon album d'images avec PowerShell"
http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!209.entry
<<Tout commença par une question sur le forum de scripting MS. >>

--
Salutations, Jean-François :o)
Avatar
Jacques Barathon [MS]
"JF" wrote in message news:
*Bonjour tibule* !
(news:)

Je crois que tu es concerné ici :
"Mon album d'images avec PowerShell"
http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!209.entry
<<Tout commença par une question sur le forum de scripting MS. >>


Je préfère prévenir tout de suite, aucun droit d'auteur ne pourra être exigé
;-)

Jacques

Avatar
JF
*Bonjour Jacques Barathon [MS]* !

Je crois que tu es concerné ici :
"Mon album d'images avec PowerShell"
http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!209.entry
<<Tout commença par une question sur le forum de scripting MS. >>
Je préfère prévenir tout de suite, aucun droit d'auteur ne pourra être exigé

;-)
Jacques


Adieu pépètes ! :o)

--
Salutations, Jean-François