elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Error al ejecutar bat desde un programa en c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error al ejecutar bat desde un programa en c#  (Leído 453 veces)
kaiserdj

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Error al ejecutar bat desde un programa en c#
« en: 25 Marzo 2018, 15:37 »

Buenas tengo el siguiente bat, que ejecuto directamente y funciona sin problemas:
Código:
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set CurVer=%%B
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%CurVer%" /v JavaHome') DO set JAVA_HOME=%%B
echo JAVA_HOME: %JAVA_HOME%
SET JAVA=%JAVA_HOME%\bin\javaw.exe
echo JAVA: %JAVA%
El problema surge cuando lo ejecuto desde un programa en c#, la funcion es la siguiente:
Código:
           string bat = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "start.bat");

            string Xmx = this.textBox1.Text;
            string Xmn = this.textBox2.Text;
            string NAME = this.textBox3.Text;

            Process proc = null;
            proc = new Process();

            proc.StartInfo.FileName = bat;
            proc.StartInfo.Arguments = String.Format("{0} {1} {2}", Xmx, Xmn, NAME);
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(proc.StartInfo.FileName);
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.Start();

            string procOutput = proc.StandardOutput.ReadToEnd();
            string procError = proc.StandardError.ReadToEnd();

            TextWriter outputlog = new StreamWriter(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "instancias\\pruebas\\.minecraft\\log.txt"));
            outputlog.Write(procOutput);
            outputlog.Close();

            TextWriter outputerror = new StreamWriter(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "instancias\\pruebas\\.minecraft\\error.txt"));
            outputerror.Write(procError);
            outputerror.Close();
El log que proporciona al ejecutar desde el programa en c#:
Código:
SET BASE=.\
FOR /F "skip=2 tokens=2*" %A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion') DO set CurVer=%B
FOR /F "skip=2 tokens=2*" %A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\" /v JavaHome') DO set JAVA_HOME=%B
echo JAVA_HOME:  
JAVA_HOME:
SET JAVA=\bin\javaw.exe
JAVA: \bin\javaw.exe
No se a que se debe que dejen de funcionar los FOR cuando este se ejecuta desde un programa en c#

El problema es que no se guarda la variable del directorio donde esta java instalado

Muchas gracias y un saludo


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines