Alguien me puede ayudar?Necesito ejecutar desde c# un .bat y pasarle una línea d

Iniciado por ssmateos, 2 Marzo 2016, 08:19 AM

0 Miembros y 1 Visitante están viendo este tema.

ssmateos

Buenos días!
tengo un .bet,  ff-prompt.bat, en el que ejecuto la línea de código "ffmpeg -i Wildlife.wmv -qscale 4 -vcodec mjpeg -acodec pcm_s16le salida.avi" y me convierte el "wildlife.wmv a avi, pero lo que entendí e hice en código no hace absolutamente nada:

Código (csharp) [Seleccionar]
ProcessStartInfo startInfo = new ProcessStartInfo("D:\\..\\ffmpeg\\ff-prompt.bat");
           startInfo.WindowStyle = ProcessWindowStyle.Minimized;
           startInfo.UseShellExecute = false;
           startInfo.RedirectStandardInput = true;

           startInfo.Arguments = "ffmpeg -i Wildlife.wmv -qscale 4 -vcodec mjpeg -acodec pcm_s16le salida.avi";

           Process.Start(startInfo);


alguien sabe por qué??? hay forma de hacerlo???

Mil gracias de antemano! Soy nueva con estas cosas!

Meta

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ssmateos

pues el caso es que lo pregunté yo misma y no me quedó nada claro, así que seguí intentándolo aquí!

:) pero gracias por hacerme caso igualmente...ya no sé donde mirar!

Meta

Hola:

¿Exactamente que hace lo que buscas?

Puedes traducir del bat a C# para que haga lo mismo.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ssmateos

Hola,
es un bat que descargué para convertir videos, y ejecuta un exe que tiene en la carpeta bin, el ffmpeg.exe, pasándole los argumentos que puse (-i -i Wildlife.wmv -qscale 4 -vcodec mjpeg -acodec pcm_s16le salida.avi) pero probé con el process y no debo hacerlo bien, se abre prompt una decima de seg pero no hace nada.  esto es el bat:
Código (dos) [Seleccionar]

@ECHO OFF
REM FF Prompt 1.2
REM Open a command prompt to run ffmpeg/ffplay/ffprobe
REM Copyright (C) 2013-2015  Kyle Schwarz

TITLE FF Prompt

IF NOT EXIST bin\ffmpeg.exe (
 CLS
 ECHO bin\ffmpeg.exe could not be found.
 GOTO:error
)

CD bin || GOTO:error
PROMPT $P$_$G
SET PATH=%CD%;%PATH%
CLS
ffmpeg -version
ECHO.
ECHO For help run: ffmpeg -h
ECHO For formats run: ffmpeg -formats ^| more
ECHO For codecs run: ffmpeg -codecs ^| more
ECHO.
ECHO Current directory is now: "%CD%"
ECHO The bin directory has been added to PATH
ECHO.

CMD /Q /K
GOTO:EOF

:error
ECHO.
ECHO Press any key to exit.
PAUSE >nul
GOTO:EOF


Slava_TZD

Código (csharp) [Seleccionar]
var startInfo = new ProcessStartInfo {
FileName = @"ff-prompt.bat",
RedirectStandardInput = true,
UseShellExecute = false,
CreateNoWindow = false
};
var proc = new Process { StartInfo = startInfo };
proc.Start ();
proc.StandardInput.WriteLine (@"ffmpeg blablabalablabal");
//proc.StandardInput.WriteLine ("exit");
proc.WaitForExit ();


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

Eleкtro

El script de batch que has mostrado de por si no hace absolutamente nada, simplemente comprueba si existe el ffmpeg, muestra la version, y por último abre una nueva instancia de la CMD... ¿te ha faltado algo por copiar?.

No le puedes pretender pasar argumentos a un script que no toma ningún argumento, tan simple como eso, eso sería el problema, ahora bien, no necesitas usar un script de Batch desde un lenguaje como C#, puedes utilizar la Class Process para iniciar el proceso FFMPEG directamente pasándole los argumentos que desees:

Código (csharp) [Seleccionar]
Process p = new Process();

p.StartInfo.FileName = "...\\FFMPEG.exe";
p.StartInfo.Arguments = "-i \"Wildlife.wmv\" -qscale 4 -vcodec mjpeg -acodec pcm_s16le \"salida.avi\"";

p.Start();
p.WaitForExit();


EDITO: Ah, creo que lo entendí mal, ¿lo que querías era escribir el input directamente en la instancia de la CMD que abre el script de Batch?, en ese caso la solución de @Slava_TZD te debería servir, la mia es para iniciar directamente el proceso FFMPEG con los argumentos.

Saludos!









Meta

Cita de: ssmateos en  2 Marzo 2016, 11:55 AM
voy a probar! mil gracias, que majos madre!  ;-) ;-) ;-)

Después de tanto sufrimiento que te vi en los foros de MSDN te veo contento. Nos avisa si te ha funcionado.

Leí hace tiempo que la competencia del .bat de CMD es el .vbs Visual Basic Script, luego hay otros más y el más que usan ahora en empresas es el F#. Aquí encontré una respuesta que hicieron hace tiempo.

Nos avisa y nos muestra tu resultado.

Suerte...
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ssmateos

 :-( :-( :-(

que desesperacion, se ejecuta pero no hace absolutamente nada....