Pascal/Turbo Pascal - Procedimiento exec

 
Vista:

Procedimiento exec

Publicado por Roberto Garcia (128 intervenciones) el 12/01/2002 06:43:42
En una de las respuestas anteriores en este foro vi una de Diego con un ejemplo para usar el procedimiento exec que es:

swapvectors;
exec('dir','/w /p');
swapvectors;

lo probe y no me funciona, este es el codigo que tengo

{$M $4000,0,0}
program usar_exec;
uses crt,dos;
begin
clrscr;
swapvectors;
exec('dir','/w /p');
swapvectors;
end;

el doserror me manda el error 2 que es "File not fund"

lo mismo me pasa con copy, cd, md y los demas comandos internos, los comandos externos los he hecho funcionar colocando toda la ruta completa es decir:

exec('c:\windows\command\format.com','a: /q');

lo mismo con diskcopy, doskey, etc.

Alguna sugerencia para poder usar los comandos internos del DOS, o puede ser posible que algo este mal en mi computadora

Muchas Gracias

Roberto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Procedimiento exec

Publicado por Diego Romero (282 intervenciones) el 15/01/2002 00:00:27
Es verdad, no habia caido en la cuenta de ese detalle, con exec no pudes ejecutar comandos internos del DOS.
Si realmente necesitas ejecutar uno de esos comandos puedes hacer lo siguiente pero no es muy elegante, crea un .bat con el mismo nombre del comando interno y ejecutalo con exec.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento exec

Publicado por adrian15 (8 intervenciones) el 17/01/2002 12:21:28
Lo de Diego Romero esta... bien pero no mucho. He aquí la solución profesional.
Consiste en usar en llamar al command.com para que este llame a uno de sus comandos internos.

program usar_exec;
uses crt,dos;
begin
clrscr;
swapvectors;
exec('c:\command.com',' dir /w /p');
swapvectors;
end;

Espero que te haya servido de ayuda pues lo de los bats pues es un poco engorroso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento exec

Publicado por Roberto Garcia (128 intervenciones) el 18/01/2002 05:59:47
No : (
nada mas no me corre, copio exactamente igual como lo pusiste pero no anda.

doserror devuelve 0 pero me aparace el mensaje de
"El directorio de busqueda de command es incorrecto"
"modificador no valido"

y me despliega todas las instrucciones del autoexec.bat (todas las lineas aparecen, practicamente lo ejecuta) me deja en c:\tp\bin> y si quiero salirme con exit, no mas no sale, tengo que cerrarlo con ctr+alt+spr.

luego si le quito "/w/p" y le dejo el dir solito, me aparece el primer mensaje "El directorio de busqueda de command es incorrecto", pero no el segundo pero tampoco hace nada, se queda en
c:\tp\bin>, de ahi si puedo salir con exit y regreso al IDE de pascal

intente con c:\windows\command\command.com pero lo mismo.

Si a ti te corre, entonces estoy haciendo algo mal

Muchas Gracias
Roberto



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Procedimiento exec

Publicado por adrian15 (8 intervenciones) el 21/01/2002 10:44:20
No lo he probado pero suele funcionar. Mira a ver no sea que uses el winxp, win2000 o winnt. Entonces c:\command.com lo tendrás que cambiar por uno de estos c:\windows\system32\cmd.exe c:\windows\system\sytem32\cmd.exe c:\windows\system32\command\cmd.exe

Siempre y cuando windows este instalado en c:\windows que puede ser que lo tengas instalado en c:\winnt con lo que sería igual pero cambiando windows por winnt.

Oye no me acuerdo muy bien, debe ser el ultimo caso, sino, ya sabes Inicio Buscar Y buscas cmd.exe y ya tendrás allí la ruta.

Yo es que si no es eso ya no te puedo ayudar más.

La cosa es que el interprete de comandos de los win9x es el command.com pero a partir del winnt existe el cmd.exe propio de los nt (que convive con el command.com si se actualiza desde un win9x, sino vive solo).

A ver si ahora lo conseguimos,...

adrian15.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ya salio...

Publicado por Roberto Garcia (128 intervenciones) el 25/01/2002 11:12:20
Despues de un buen de estar probando ya di con el resultado.

al colocar la instruccion "c:\command.com" carga una copia del interprete de comandos, entonces los paramentros deben ser propios del command.com (nunca he sido bueno para las explicaciones)

al ejecutar desde DOS "command/?" aparece una lista de los parametros que acepta el command.com cuando se manda a llamar, viendo esto ya se aclaran los mensajes de error que recibia.

"El directorio de busqueda de command es erroneo"
"modificador no valido"
y el problema de no poder salir con "exit" y que cargaba el archivo autoexec.bat

exec('c:\command.com','dir /w /p');

en esta linea le pasa a command.com "dir" como dispositivo de entrada y salida para los comandos, ahi el primer mensaje de error.

"/w" ciertamente no es un modificador valido como se ve cuando se hace command/?

y "/p" que si es valido y hace que el nuevo interprete de comandos sea permanente (que no se pueda salir), de ahi que cargara el autoexec y no tuviera efecto la orden "exit"

la solucion es "/c" o "/k" que ejecuta un comando y vuelve o ejecuta un comando y permanece respectivamente.

entonces queda
"exec('c:\command.com','/c copy *.exe a:');" <-- un ejemplo

y ademas asi ya se pueden acceder a todos los comandos, internos o externos (sin tener que colocar toda la ruta completa)

Gracias por sus respuestas

Roberto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar