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

passage d'une variable vbs vers batch

10 réponses
Avatar
---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:\REPERT\prog\0.cmd"

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

merci d'avance.

10 réponses

Avatar
Gilles LAURENT [MVP]
"---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
Avatar
---DGI972---
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 ...
Avatar
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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
Avatar
---DGI972---
Gilles LAURENT [MVP] avait énoncé :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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"
Avatar
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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
Avatar
---DGI972---
Gilles LAURENT [MVP] a exposé le 18/03/2009 :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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"
Avatar
Gilles LAURENT [MVP]
"---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
Avatar
---DGI972---
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
Avatar
---DGI972---
---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é
Avatar
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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