Cita:
Empezado por jonydread
amigos !!
me hechan una manito lo que pasa es que quiero editar,modificar y si no existe crear un archivo con extension .cmd que instala un programa
estube viendo este hilo pero no se me ocurre la forma de hacerlo
el archivo debe ser de este formato y al agregar un programa se edite y agrege las lineas antes de exit, alguna idea porfavor...
Código:
CLS
@echo off
Echo........................................
Echo..........Install program
start /wait %AppsRoot%\Install\program.exe -install
Echo..................Installed.............
exit
saludos!!
|
Pues lo que te recomiendo, es que siempre que crees un archivo consultes si este esta.
Código Delphi
[-]
if FileExists( 'C:\Bla\bla\bla\Archivo.cmd' ) then
Begin
Else
End;
Con esto puedes verificar cuando no exista el archivo o cuando si esta, para que puedas efectuar las acciones que desees., pasando como parametro el
Directorio(en caso de que el archivo no este en la misma ubicacion de tu aplicacion) y el nombre del archivo a la funcion FileExists() .
Para crear un archivo, la forma mas sutil y menos complicada que te recomiendo es utilizar un componente TMemo. Podes crear tu
archivo con el contenido del TMemo de la siguiente forma, asumiento que el componente TMemo incluido en la aplicacion le coloques de nombre Memo1.
Código Delphi
[-]
Memo1.Lines.Add('Aca puedes escribir lineas, si lo que quieres es automatizar algo, por ejemplo cargar comandos de un archivo, etc etc');
Memo1.lines.SaveToFile('NombreArchivo.cmd');
Ahora bien con lo de
al agregar un programa se edite y agrege las lineas antes de exit, no entiendo muy claramente, pero pienso que la
solucion que te dare aplique correctamente a lo que necesites.
Vamos por partes, necesitas detectar cuando es que se agrega un programa, asumo que en el sistema operativo donde correra la aplicacion,
como tambien puede ser un directorio apclock o un recurso compartido, bla-bla-bla, bueno lo importante es saber cuando es que ocurre ese cambio,
entonces lo ideal es que con tu aplicacion coloque un timer, el cual se encarge de monitorear el directorio de instalacion de las aplicaciones y tener
una imagen o estructura de los directorios o aplicaciones instalas (En caso de instalaciones en sl S.O. OJO que no todas de aparecen los programas
instalados ya que algunos solo crean directorio e inician como servicio, cabe como ejemplo) esta estructura o imagen de aplicaciones o directorios la
guardas en X lugar o directorio y cada cierto tiempo comparas la estructura guardada, con la estructura actual y si hay cambio, verificar
cual es directorio nuevo o aplicacion nueva y capturarla. Pero bueno todo eso como que suena a marciano, y bueno como jodidos hago eso???
Puedes hacerlo con 3 Tmemos un timer y algunas funciones.
Timer = Timer1
Tmemo= Memo1,Memo2,Memo3;
Código Delphi
[-]
function RastreaDir( Dir: string ):TStringList;
var
FileSearch: TSearchRec;
begin
Screen.Cursor := crHourGlass;
Result := TStringList.Create;
Result.Clear;
ChDir ( Dir );
if FindFirst ( '*.*', faDirectory, FileSearch )=0 then
repeat
if ( (FileSearch.Attr and fadirectory) = fadirectory) then
begin
if (FileSearch.Name <> '.')and (FileSearch.Name <> '..') then
RastreaDir( Dir + '\' + FileSearch.Name );
end
else
begin
Form1.Memo1.Lines.Add( FileSearch.Name );
if FileExists( 'C:\Bla\bla\bla\ArchivoImagenDirectoriooaplicaciones.txt' ) then
Begin
Else
Form1.Memo2.Lines.Add( Memo1.text );End;
end;
until FindNext( FileSearch ) <> 0;
FindClose( FileSearch );
Screen.Cursor := crDefault;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to memo2.Lines.Count-1 do
begin
if memo1.Lines[i] <> memo2.Lines[i] then
memo3.lines.add(memo1.lines[i]);end;
end;
Memo1.lines.LoadFromFile('Direcotio\Archivo');
for i:=0 to memo1.Lines.Count-1 do
begin
if memo1.Lines[i].String = 'exit' then
X:= i; end;
for a:=0 to memo1.Lines.Count-1 do
begin
if a = (X-1) then Memo1.Lines.Add(Memo3.Text);
end;
Memo1.Lines.SavetoFile('Directorio\Archivo');
Bueno mi amigo, espero esto de pueda ser util y sacar de un apuro, algo que si te digo, es que de todo lo que aporte algo no es optimo, y es
lo ultimo de leer el Memo1 para detectar donde esta el exit y luego lanzar otro ciclo para agregar las instalaciones, pero funciona, igual alguien
del foro ayuda en ello, ya que ahora mismo no recuerdo otro algoritmo que efectue esa rutina de mejor forma.
Cualquier duda comentas.
Saludos..