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.
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.
Bonjour,
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
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 ...
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
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"
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
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
oui le vbscript fonctionne correctement
C'est bon c'était l'espace aprés 0.cmd qui manquait.
Désolé
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