PDA

Ver la Versión Completa : Guardar en txt todo el texto del command prompt


locojoan
09-04-2006, 05:41:15
hola. quisiera saber si se puede guardar el texto completo que sale en el command prompt y luego mostrarlo en un memo.
por ejemplo si pongo dir. todos esos datos mostrarlos en un memo.

grasias

dec
09-04-2006, 08:51:14
Hola,

Echa un vistazo a este Hilo (http://www.clubdelphi.com/foros/showthread.php?t=11744) que he encontrado luego de esta búsqueda (http://www.clubdelphi.com/foros/search.php?searchid=439988) en los Foros.

Lepe
09-04-2006, 17:24:33
No sé si será viable, pero un simple:

dir C: > c:\texto.txt

En principio, cualquier orden dada al sistema operativo puede ser redirigida con ">" a un fichero.

Saludos

dec
09-04-2006, 20:19:54
Hola,

Lepe, puede hacerse lo que dices, aunque, gracias sean dadas a la maravillosa API de Windows (no he sabido utilizar más ironía, espero que se comprenda) es posible también omitir el paso que supone guardar la información en un archivo.

Nota: Aclaro que, aunque no soy el único que piensa que el API de Win32 es una porquería o se acerca a ella, reconozco que no he profundizado nunca lo suficiente en la misma, que muchas faltas que encuentro en el API pueden ser en realidad faltas propias.

seoane
09-04-2006, 20:24:21
Aunque en el hilo que te indico dec hay soluciones muy validas (una de ellas es mia :) ) aqui te dejo otra. Siempre esta bien tener varias formas de afrontar el mismo problema.


function Redirigir(Comando: string; Archivo: string): Boolean;
var
Buffer: array[0..MAX_PATH] of Char;
Info: SHELLEXECUTEINFO;
begin
Result:= FALSE;
Fillchar(Buffer,Sizeof(Buffer),0);
if GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1) > 0 then
begin
Fillchar(Info,Sizeof(Info),0);
Info.cbSize:= SizeOf(Info);
Info.fMask:= SEE_MASK_NOCLOSEPROCESS;
Info.lpFile:= @Buffer;
Info.lpParameters:= PChar('/C '+Comando+' > '+Archivo);
Info.nShow:= SW_HIDE;
if ShellExecuteEx(@Info) then
begin
while WaitForSingleObject(Info.hProcess, 200) = WAIT_TIMEOUT do
Application.ProcessMessages;
Result:= TRUE;
end;
end;
end;