2012-08-28 46 views
15

Quiero tener un archivo por lotes (debe colocarse en el escritorio) que hace lo siguiente;Archivo por lotes para ejecutar un comando en cmd dentro de un directorio

  • abre cmd
  • navega a un directorio, por ejemplo, C: \ activiti-5.9 \ setup
  • ejecuta un comando dentro del directorio, p. ant demo.start (este comando ejecuta el servidor activiti)

He intentado lo siguiente para llegar al directorio, pero ¿cómo ejecutar el comando "ant demo.start"?

START cmd.exe/k "cd C: \ activiti-5.9 \ setup"

Gracias por la ayuda.

EDIT:

Refiriéndose a respuesta de zb226 a continuación: Una pregunta más si puede responder a mí es cómo hacer que cmd para ejecutar como administrador? ¿Funcionará lo siguiente?

START cmd /K "runas /user:administrator & cd C:\activiti-5.9\setup & ant demo.start"

Respuesta

12

Para mí, lo siguiente es trabajar y ejecutar el servidor activiti así como también abrir el explorador en el navegador (con la ayuda de zb226's respuesta y comentario);

START "runas /user:administrator" cmd /K "cd C:\activiti-5.9\setup & ant demo.start"

START /wait localhost:8080/activiti-explorer

24

cadena comandos arbitrarios utilizando & como esto:

command1 & command2 & command3 & ... 

Por lo tanto, en su caso particular, poner esta línea en un archivo por lotes en el escritorio:

START cmd.exe /k "cd C:\activiti-5.9\setup & ant demo.start" 

Usted también puede usar && para encadenar comandos, aunque esto realizará una comprobación de errores y la cadena de ejecución se romperá si uno de Los comandos e fallan. El comportamiento se detalla here.

Editar: Intrigado por el comentario de @ James K "puede encadenar los comandos, pero no tendrá ningún efecto", he probado un poco más y para mi sorpresa descubrí, que el programa estaba empezando en mi original prueba - firefox.exe - aunque no existe en un directorio en la variable de entorno PATH, es realmente ejecutable en cualquier parte en mi sistema (lo que realmente me hizo preguntarme - ver la parte inferior de la respuesta para una explicación). Entonces, de hecho, ejecutando ...

START cmd.exe /k "cd C:\progra~1\mozill~1 && firefox" 

... no demostró que la solución funcionaba. Así que elegí otro programa (nLite) después de asegurarse de que era no ejecutable en cualquier parte de mi sistema:

START cmd.exe /k "cd C:\progra~1\nlite && nlite" 

y que funciona igual que mi respuesta original ya se ha sugerido. No se proporciona una versión de Windows en la pregunta, pero estoy usando Windows XP, por cierto.


Si alguien está interesado por qué firefox.exe, si bien no es en PATH, es ejecutable en cualquier parte de mi sistema - y muy probablemente en el suyo, así - esto se debe a una clave de registro donde las aplicaciones se pueden registrar a estar disponible en todos lados. Vea this SU answer para más detalles.

+0

Debe probar antes de publicar. PUEDE encadenar los comandos, pero no tendrán ningún efecto. –

+0

Muchas gracias zb226, funcionó para mí en la misma cadena y soy capaz de ejecutar el servidor de activiti. Una pregunta más si me puede responder es cómo hacer que el cmd se ejecute como administrador. ¿Funcionará lo siguiente? START cmd/K "runas/user: administrator & cd C: \ activiti-5.9 \ setup & ant demo.start" En realidad funciona, pero no sé si cmd se está ejecutando en modo de administración o no. – nommyravian

+0

Esto realmente debería ser una pregunta separada o incluida en su pregunta original, pero aquí va: No, eso no lo ejecutará como administrador. Has encadenado 'runas' al frente, pero necesitas dar mi respuesta como parámetro a' runas'. Para hacer eso, se necesita escaparse, y el comando 'START' causará problemas (pero no creo que lo necesite de todos modos, porque hacer clic en un archivo por lotes en el escritorio genera una nueva ventana). Para resumir, intente esto: 'runas/user: administrator" cmd.exe/k \ "cd C: \ activiti-5.9 \ setup^& ant demo.start \" "'. – zb226

1

CMD.EXE no ejecutará los comandos internos contenidos dentro de la cadena. Solo los archivos reales pueden ser lanzados con esa cadena.

Necesitará realmente llamar a un archivo por lotes para hacer lo que desee.

BAT1.bat

start cmd.exe /k bat2.bat 

BAT2.bat

cd C:\activiti-5.9\setup 
ant demo.start 

Es posible que desee crear una carpeta llamada BAT, y añadir su ubicación a la ruta. Entonces, si crea C:\BAT, agregue C:\BAT\; a la ruta. El camino se encuentra en:

click -> Start -> right-click Computer -> Properties -> 
    click -> Avanced System Settings -> Environment Variables 
    select -> Path (From either list. User Variables are specific to 
        your profile, System Variables are, duh, system-wide.) 
    Click -> Edit 
Press the -> the [END] or [HOME] key. 
    Type -> C:\BAT\; 
    Click -> OK -> OK 

Ahora coloque todos sus archivos por lotes en C:\BAT y que se encontrará, sin importar el directorio actual.

+0

¿Está seguro de ese bit con los comandos internos? ? Por mi parte, encadenar con '&' funciona bien (ver [mi respuesta] (http://stackoverflow.com/a/12168950/1529709)). Pero si me falta algo, por favor, elabore, el aprendizaje nunca es algo malo :) – zb226

+0

Bueno, ** ** nunca he recibido comandos internos para ejecutar de esa manera (aunque se ejecutarán los archivos reales de esa manera). Supongo que me puede estar perdiendo algo, pero lo he probado en Windows 7 Ultimate, XP, 2000 Server y 98. No es exactamente una prueba exhaustiva, pero los resultados han sido consistentes. –

0

mío hizo ejecutar comandos en orden. Aquí está mi versión de lo que lo estaba usando para:

START cmd.exe/k "T: T & cd: \ Design_stuff \ new_lcso_website_2017 & python -m http.server"

necesitaba

  1. Cambio a mi U drive
  2. CD a una carpeta específica que contiene una página web que estoy rediseñando
  3. Ejecutar python con el módulo de servidor http (para mostrar el contenido en el navegador).

Si esos comandos están fuera de servicio, no mostrarán los archivos correctos. Inicialmente me olvidé de cambiar a U: y, al ejecutar el archivo por lotes en mi escritorio, creé una página web en mi navegador al http://localhost:8000 mostrándome los contenidos de mi Escritorio en lugar de la carpeta que quería.

-2

también puede comprobar It:

cmd/c/d cd C: \ activiti-5.9 \ instalar & demo.start hormiga

3

Esta pregunta es de 5 años de edad. Me pregunto por qué todavía nadie ha encontrado el interruptor /d para establecer la carpeta de trabajo:

start /d "c:\activiti-5.9\setup" cmd /k ant demo.start 
Cuestiones relacionadas