C/Visual C - Las tonterias del DOS

 
Vista:

Las tonterias del DOS

Publicado por David (1 intervención) el 24/10/2008 03:18:47
Intento hacer un programa muy simple pero me ocurre algo muy extraño. bueno primero unos datos:

Sistema operativo: Windows XP professional
Compilador: Dev-C++ 5 beta

Pues bien, el programa del que os hablo lo que hace es:

1)En primer lugar, hay un archivo llamado "Lock_HYUF67TR87G8TG3.bat" que esta almacenado en una tarjeta de memoria SD.

2)El programa copia el archivo mencionado("Lock_HYUF67TR87G8TG3.bat") desde la unidad H: que es la unidad de la tarjeta de memoria hasta la unidad C: que es el disco duro y es donde esta el sistema operativo instalado mediante la funcion system, pasandole como argumento "xcopy H:\Lock_HYUF67TR87G8TG3.bat C:\". Hasta aqui bien, el archivo se copia sin problema alguno(comprobado).

3)Acto seguido, una vez el archivo ya esta en la unidad C:, el programa procede a ejecutarlo asi: system("C:\Lock_HYUF67TR87G8TG3.bat"); y el archivo se ejectua, pero entonces viene el problema, que me resulta MUY MUY extraño, por que, ojo al dato:

el "sub programa" "Lock_HYUF67TR87G8TG3.bat" lo que hace(o deberia) es modificar ciertas caracteristicas(que no vienen al caso) de una carpeta en concreto, llamada "SYNAPSE AREA" para lo cual el "sub programa" "Lock_HYUF67TR87G8TG3.bat" debe estar en la misma sitio, directorio o lo que sea que la carpeta "SYNAPSE AREA" y por eso al principio se copia este sub programa en el lugar donde esta la carpeta "SYNAPSE AREA", pero por lo visto el programa principal que lo controla todo se lo pasa todo por los bajos y aunque el sub programa "Lock_HYUF67TR87G8TG3.bat" este en el mismo lugar que la carpeta ya mencionada varias veces, el programa me dice que nanay de la china, peeeero ojo al dato, ojo e, que si pongo la carpeta "SYNAPSE AREA" en la unidad H(la tarjeta de memoria), esta si se modifica, cuando se supone que si haces "C:\Lock_HYUF67TR87G8TG3.bat" deberia ejecutar el archivo de la unidad C: y no el que esta en la unidad H:, por que, digo yo, de donde coño esta sacando el programa que tiene que ejecutar el programa "Lock_HYUF67TR87G8TG3.bat" de la unidad H si con el comando "C:\Lock_HYUF67TR87G8TG3.bat" le estoy diciendo que ejecute el de la unidad C:, obviamente? es muy raro, ah si, y lo mejor de todo, si en vez de usar el programa principal que te copia el archivo y lo ejecuta para hacerlo todo automatico, si en vez de esto copia yo manualmente el archivo "Lock_HYUF67TR87G8TG3.bat" de la unidad H a la C y lo ejecuto yo, entonces wala! entonces si funciona, pero es que no le veo ningun secreto al asunto, es por logica que de la otra manera tambien tendria que funcionar......esta loco mi ordenador? xd

aqui el codigo fuente(mini codigo mejor dicho, por que mira que es simple el programa, vamos que es pequeño pero maton)

#include <stdio.h>

main()
{
system("xcopy H:\Lock_HYUF67TR87G8TG3.bat C:\");
system("C:\Lock_HYUF67TR87G8TG3.bat");
}
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:Las tonterias del DOS

Publicado por nayumiorama (53 intervenciones) el 24/10/2008 10:40:28
Si no recuerdo mal de mis tiempos de DOS (en windows es similar), cuando ejecutas un "subprograma" se ejecuta desde la ruta donde se encuentra el ejecutable. Si manejas rutas relativas, son relativas a la ruta donde se encuentra el ejecutable.

Ponle al fichero bat que maneje rutas absolutas, o pásale un parámetro con la ruta donde tiene que trabajar.
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