passage d'une variable vbs vers batch

Le
---DGI972---
Bonjour,

Je souhaite passer une variable issue d'un traitement dans un vbs puis
la transmettre dans un batch.
Comment faire ?

dans mon example (extraits du vbs et du batch pour illuster):

dans le vbs:
DAT=Mid(DJ,7,2)&"-"&Mid(DJ,5,2)&"-"&MID(DJ,1,4)
STRCMD="%COMSPEC% /c c:REPERTprog.cmd"

dans le batch 0.cmd:
For /f "tokens=*" %%f in ('dir /s /b
%CD%:%DAT%1Mare89?????????.tif') do (
copy /v /y "%%f" "C:REPERT"

merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #18920261
"---DGI972---" wrote:

Bonjour,



Bonjour,

Je souhaite passer une variable issue d'un traitement dans un vbs puis
la transmettre dans un batch.
Comment faire ?



Une solution consiste à transmettre la variable comme argument. Le script
VBScript défini la variable DAT puis la transmet au script batch via la
méthode Run de l'interface WSHShell. La variable sera donc accessible dans le
batch via la variable système %1. Par exemple :

--- CodeSnippet.vbs ---
Set oSh=CreateObject("WScript.Shell")
DAT="Hello From VBScript"
oSh.Run "%comspec% /c test.cmd " & Chr(34) & DAT & Chr(34)
--- CodeSnippet.vbs ---

--- test.cmd ---
@echo off
echo DAT=%1
pause
--- test.cmd ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
---DGI972---
Le #18924391
Gilles LAURENT [MVP] a écrit :
"---DGI972---" wrote:

Bonjour,



Bonjour,

Je souhaite passer une variable issue d'un traitement dans un vbs puis
la transmettre dans un batch.
Comment faire ?



Une solution consiste à transmettre la variable comme argument. Le script
VBScript défini la variable DAT puis la transmet au script batch via la
méthode Run de l'interface WSHShell. La variable sera donc accessible dans le
batch via la variable système %1. Par exemple :

--- CodeSnippet.vbs ---
Set oSh=CreateObject("WScript.Shell")
DAT="Hello From VBScript"
oSh.Run "%comspec% /c test.cmd " & Chr(34) & DAT & Chr(34)
--- CodeSnippet.vbs ---

--- test.cmd ---
@echo off
echo DAT=%1
pause
--- test.cmd ---



Bonjour,

J'ai pas réussi ...

mon morçeau de vbs

DAT=Mid(DJ,7,2)&"-"&Mid(DJ,5,2)&"-"&MID(DJ,1,4) 'donne 29-09-2008 par
ex
STRCMD="%COMSPEC% /c c:REPERTprog.cmd"
CreateObject("WScript.Shell").run STRCMD & Chr(34) & DAT & Chr(34)

mon morceau de 0.cmd

@echo off
@setlocal enabledelayedexpansion
@SETLOCAL ENABLEEXTENSIONS
SET CD=G
REM SET DAT)-09-2008
PING 127.0.0.1 -n 3 >NUL
MD C:REPERT%1
PING 127.0.0.1 -n 1 >NUL
For /f "tokens=*" %%f in ('dir /s /b %CD%:%11Mare89?????????.tif')
do (
copy /v /y "%%f" "C:METEOR"
)

la ligne
MD C:REPERT%1
et la ligne
For /f "tokens=*" %%f in ('dir /s /b %CD%:%11Mare89?????????.tif')
ne fait pas ce que je voudrais et si je retire le REM SET
DAT)-09-2008
le 0.cmd fonctionne correctement
:|



Je suis désolé j'ai surement raté qqchose ...
Gilles LAURENT [MVP]
Le #18925231
"---DGI972---" message de
news:
| Bonjour,

Bonsoir;

| STRCMD="%COMSPEC% /c c:REPERTprog.cmd"

Il manque un espace à la fin de la chaine pour l'argument :
STRCMD="%COMSPEC% /c c:REPERTprog.cmd "

| MD C:REPERT%1

L'argument est transmis entre guillemets
Il est ici nécessaire de s'en débarraser
Pour cela on utilise le tilde:
MD C:REPERT%~1

| %CD%:%11Mare89?????????.tif') do (

Ici également :
%CD%:%~11Mare89?????????.tif') do (

| Je suis désolé j'ai surement raté qqchose ...

Tenez-nous au courant.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
---DGI972---
Le #18925491
Gilles LAURENT [MVP] avait énoncé :
"---DGI972---" message de
news:
Bonjour,



Bonsoir;

STRCMD="%COMSPEC% /c c:REPERTprog.cmd"



Il manque un espace à la fin de la chaine pour l'argument :
STRCMD="%COMSPEC% /c c:REPERTprog.cmd "

MD C:REPERT%1



L'argument est transmis entre guillemets
Il est ici nécessaire de s'en débarraser
Pour cela on utilise le tilde:
MD C:REPERT%~1

%CD%:%11Mare89?????????.tif') do (



Ici également :
%CD%:%~11Mare89?????????.tif') do (

Je suis désolé j'ai surement raté qqchose ...



Tenez-nous au courant.



ben non ca marche pas

extrait du vbs:

DAT=Mid(DJ,7,2)&"-"&Mid(DJ,5,2)&"-"&MID(DJ,1,4)

STRCMD="%COMSPEC% /c c:REPERTprog.cmd "
CreateObject("WScript.Shell").run STRCMD&Chr(34)&DAT&Chr(34)

le 0.cmd

@echo off
@setlocal enabledelayedexpansion
@SETLOCAL ENABLEEXTENSIONS
SET CD=H
rem SET DAT)-09-2008
PING 127.0.0.1 -n 3 >NUL
MD C:METEOR%~1
PING 127.0.0.1 -n 1 >NUL
For /f "tokens=*" %%f in ('dir /s /b
%CD%:%~11Mare89?????????.tif') do (
copy /v /y "%%f" "C:METEOR"
Gilles LAURENT [MVP]
Le #18925861
"---DGI972---" message de
news:
| ben non ca marche pas

Est-ce que mon exemple initial fonctionne chez vous ?
Si oui alors le problème est dans votre batch. Essayez d'invoquer le
batch 0.cmd avec un argument à partir de la ligne de commandes (en ayant
pris soin de mettre en commentaire la ligne @echo off). Par exemple :
> 0.cmd "29-09-2008"

Que se passe t-il ?

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
---DGI972---
Le #18927831
Gilles LAURENT [MVP] a exposé le 18/03/2009 :
"---DGI972---" message de
news:
ben non ca marche pas



Est-ce que mon exemple initial fonctionne chez vous ?
Si oui alors le problème est dans votre batch. Essayez d'invoquer le
batch 0.cmd avec un argument à partir de la ligne de commandes (en ayant
pris soin de mettre en commentaire la ligne @echo off). Par exemple :
> 0.cmd "29-09-2008"

Que se passe t-il ?



oui cela fonctionne correctement en faisant:
0.cmd "29-09-2008"
Gilles LAURENT [MVP]
Le #18928621
"---DGI972---" wrote:

oui cela fonctionne correctement en faisant:
0.cmd "29-09-2008"



Essayez donc maintenant avec le script VBScript ci-dessous :

--- CodeSnippet.vbs ---
Set oSh=CreateObject("WScript.Shell")
sDate="29-09-2008"
sCmd="%comspec% /c 0.cmd "
oSh.Run sCmd & Chr(34) & sDate & Chr(34)
--- CodeSnippet.vbs ---

Note: Le script batch 0.cmd doit se situer dans le même dossier que le
script VBScript

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
---DGI972---
Le #18930701
Gilles LAURENT [MVP] a écrit :
"---DGI972---" wrote:

oui cela fonctionne correctement en faisant:
0.cmd "29-09-2008"



Essayez donc maintenant avec le script VBScript ci-dessous :

--- CodeSnippet.vbs ---
Set oSh=CreateObject("WScript.Shell")
sDate="29-09-2008"
sCmd="%comspec% /c 0.cmd "
oSh.Run sCmd & Chr(34) & sDate & Chr(34)
--- CodeSnippet.vbs ---

Note: Le script batch 0.cmd doit se situer dans le même dossier que le
script VBScript



oui le vbscript fonctionne correctement
---DGI972---
Le #18931531
---DGI972--- a écrit :
Gilles LAURENT [MVP] a écrit :
"---DGI972---" wrote:

oui cela fonctionne correctement en faisant:
0.cmd "29-09-2008"



Essayez donc maintenant avec le script VBScript ci-dessous :

--- CodeSnippet.vbs ---
Set oSh=CreateObject("WScript.Shell")
sDate="29-09-2008"
sCmd="%comspec% /c 0.cmd "
oSh.Run sCmd & Chr(34) & sDate & Chr(34)
--- CodeSnippet.vbs ---

Note: Le script batch 0.cmd doit se situer dans le même dossier que le
script VBScript



oui le vbscript fonctionne correctement



C'est bon c'était l'espace aprés 0.cmd qui manquait.

Désolé
Gilles LAURENT [MVP]
Le #18950001
"---DGI972---" message de
news:
| C'est bon c'était l'espace aprés 0.cmd qui manquait.

Je suis donc rassuré ;-)
Merci pour ce retour.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme