2012-08-10 47 views
20

Solo necesito escribir un archivo por lotes simple solo para ejecutar un vbscript. Tanto vbscript como el archivo por lotes están en la misma carpeta y están en el directorio SysWOW64, ya que vbscript solo se puede ejecutar en ese directorio. Actualmente mi archivo por lotes es la siguiente:Ejecutando vbscript desde el archivo por lotes

@echo off 
%WINDIR%\SysWOW64\cmd.exe 
cscript necdaily.vbs 

Pero el VBScript no fue ejecutado y sólo el símbolo del sistema es abierto. ¿Alguien puede decirme cómo puedo ejecutar vbscript cuando ejecuto este archivo por lotes? Gracias.

Respuesta

31

Puede usar %~dp0 para obtener la ruta del archivo por lotes actualmente en ejecución.

Editado para cambiar el directorio a la ubicación VBS antes de ejecutar

Si desea que el VBS para ejecutar de forma sincronizada en la misma ventana, a continuación,

@echo off 
pushd %~dp0 
cscript necdaily.vbs 

Si desea que el VBS para ejecutar sincrónicamente en una nueva ventana, a continuación,

@echo off 
pushd %~dp0 
start /wait "" cmd /c cscript necdaily.vbs 

Si desea que el VBS para ejecutar de forma asincrónica en la misma ventana, a continuación,

@echo off 
pushd %~dp0 
start /b "" cscript necdaily.vbs 

Si desea que el VBS para ejecutar de forma asincrónica en una nueva ventana, a continuación,

@echo off 
pushd %~dp0 
start "" cmd /c cscript necdaily.vbs 
+0

he intentado todos los comandos, pero todavía no va a funcionar – user918197

+1

@ user918197 -. ??? trabajan para mí. Quizás tu VBS solo funciona si el directorio actual coincide con la ubicación de VBS. Prueba las ediciones que hice a la respuesta. – dbenham

+0

tiene algo que ver con 32 bits o algo de 64 bits porque mi vbscript no puede ejecutarse en Windows Server 2008 R2 que es de 64 bits y eso es yi copia toda la carpeta que contiene los vbscripts en el directorio SysWOW64 y pudo para ejecutar cuando escribo el comando, cscript necdaily.vbs pero no en el archivo por lotes. – user918197

7

Este es el comando para el archivo por lotes y puede ejecutar el VBScript.

C:\Windows\SysWOW64\cmd.exe /c cscript C:\Windows\SysWOW64\...\necdaily.vbs 
1

Bueno, yo estoy tratando de abrir un archivo .vbs dentro de un archivo por lotes sin tener que hacer clic abierta, pero la respuesta a esta pregunta es ...

SET = APPDATA% CD%

inicio (el archivo de aquí sin los soportes con un .vbs si se trata de un archivo vbd)

esperanza que ayuda :)

5

archivos por lotes se procesan fila por fila y terminan cada vez que se llama a una n ejecutable directamente.
- Para hacer que el archivo por lotes espere a que el proceso finalice y continúe, coloque call frente a él.
- Para que el archivo por lotes continúe sin esperar, coloque start "" delante de él.

recomiendo el uso de esta secuencia de comandos de una sola línea para lograr su objetivo:

@call cscript "% ~ dp0necdaily.vbs"

(porque se trata de una sola línea, puede utilizar @ en lugar de @echo off)

Si cree que su script sólo puede ser llamado desde las versiones syswow64 de cmd.exe, puede intentar:

@% WINDIR% \ SysWOW64 \ cmd.exe/c llama a cscript "% ~ dp0necdaily.VBS "

Si necesita la ventana a permanecer, puede sustituir a/c con/k

+0

Para el primer comando, tal vez la ['call'] (https://ss64.com/nt/call.html) ni siquiera es necesaria. El script también se ejecuta sincrónicamente sin él. Normalmente 'call' se usa para llamar a un segundo script * batch * sin mezclar contextos de ejecución. Por lo tanto, un pequeño '@cscript"% ~ dp0necdaily.vbs "' hace el trabajo. –

1

Solo trata de este código:

arranque """ C: \ Users \ dipesh \ Desktop \ VBScript \ welcome.vbs"

y guardar como .bat, que funciona para mí

Cuestiones relacionadas