Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como ejecutar un archivo bat (https://www.clubdelphi.com/foros/showthread.php?t=76965)

zule 09-12-2011 03:47:58

como ejecutar un archivo bat
 
Hola, todo el mundo, y todos los del foro, soy nueva en este foro, y por tanto no he, aportado nada todavia, pero ya muy pronto are, algunas aportaciones, por ahora, me gustaria que me ayudaran en el titulo de este mensaje,

como puedo ejecutar un archivo bat, que comandos puedo utilizar, ya he, utilizado estos:

WinExec(PChar(rutaArchivo2),SW_SHOWNORMAL);
ShellExecute(0,pchar('open'),pchar(rutaArchivo2),nil,nil,SW_SHOWNORMAL);

y no me ejecuta el programa, el archivo bat, cuando lo ejecuto dandole doble clik, funciona perfectamente, pero cuando lo ejecuto desde delphi, sale un comentario que dice falta parametros..

si alguien tiene un idea, por favor agradeceria mucho, su comentario. o si alguien me puede dar un tutorial de como ejecutar los archivos bat, directo desde delphi, y no asi, llamando desde afuera..
gracias de antemando...

Caral 09-12-2011 03:57:52

Hola
Bienvenida.
De momento que algún amigo Moderador mueva este hilo a Varios, Por favor.
Saludos

ecfisa 09-12-2011 04:27:18

Hola zule y bienvenida a Club Delphi :)

Como a todo miembro que recién ingresa, te invito a que leas nuestra guía de estilo.

Te pongo un ejemplo del uso de la función ShellExecute enviando variables como argumentos por que creo que te va a resultar más claro de entender:
Código Delphi [-]
var
  lpOperation, lpFile, lpParameters, lpDirectory: PChar;
begin
  lpOperation:= 'open';
  lpFile:= 'PRUEBA.BAT';
  lpParameters:= '';
  lpDirectory:=  'C:\TEMP';
  ShellExecute(Handle, lpOperation, lpFile, lpParameters, lpDirectory, SW_NORMAL);
end;

Un saludo.

jxsoftware 14-12-2011 04:55:00

Otra forma

Código Delphi [-]
procedure Ejecutar(sApp: String; Esperar: Cardinal; Visible: Boolean);
var
  StarInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
begin
  FillChar(StarInfo, SizeOf(TStartupInfo), 0);
  StarInfo.cb := SizeOf(TStartupInfo);
  if not Visible then
  begin
    StarInfo.dwFlags := STARTF_USESHOWWINDOW;
    StarInfo.wShowWindow := SW_HIDE;
  end;
  if CreateProcess(nil, PChar(sApp), nil, nil, False, NORMAL_PRIORITY_CLASS,
    nil, PChar(ExtractFilePath(sApp)), StarInfo, ProcInfo) then
  begin
    WaitForSingleObject(ProcInfo.hProcess, Esperar);
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end
  else
    if CreateProcess(nil, PChar(sApp), nil, nil, False, NORMAL_PRIORITY_CLASS,
      nil, nil, StarInfo, ProcInfo) then
    begin
      WaitForSingleObject(ProcInfo.hProcess, Esperar);
      CloseHandle(ProcInfo.hProcess);
      CloseHandle(ProcInfo.hThread);
    end
    else
      ShowMessage(SysErrorMessage(GetLastError));
end;
 
//Espera hasta que termine de ejecutarse archivo.bat antes de pasar a la siguiente instrucción.
Ejecutar('C:\archivo.bat parametros', Infinite, True); 
 
//Ejecuta archivo.bat y pasa inmediatamente a la siguiente instrucción.
Ejecutar('C:\archivo.bat parametros', 0, True);


La franja horaria es GMT +2. Ahora son las 04:06:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi