Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kerkox

#11
Hola a todos, tengo un problema con una funcion de fstream pues el problema es que para poder abrir un fichero debo de tener la ruta completa, pero yo quiero hacerla dinamica ya que se que se puede utilizar el %windir% para llegar a la letra del disco principal y la carpeta windows
Ejemplo.

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <fstream>


using namespace std;

bool file_exists(const char * f)
{
    ifstream file;
    file.open(f);
    if(file.fail())
        return false;
    file.close();
    return true;
}

int main()
{

cout << "Vamos a ver si es fichero existe  " <<endl;
cout << endl;
cin.get();

//con esta no funciona
bool j = file_exists("%windir%\system32\cmd.exe"); // se puede usar file.exe pues para verficar
/*
Peo con esta si funciona
bool j = file_exists("c:\\windows\\system32\\cmd.exe");
*/


if (j)
{

cout << "si existe el archivo  "<< endl;
cin.get();

}
else
{
    cout << "No existe el archivo" << endl;
    cin.get();
}

return 0;


}


Pues desearia conocer como hacer estas rutas dinamicas ya que las uso mucho para el sistema o si hay alguna otra forma de utlizar la libreria fstream
Cualquier ayuda es bienvenida o si pueden darme algun manual o recomendarme algo para poder descubrirlo por mi mismo.
 
#12
hola amchacon tienes algun link donde pueda encontrar algo para aprender sobre los ficheros en c++
#13
Cita de: amchacon en 12 Abril 2014, 18:47 PM
Lo que buscas es esto:
http://www.cplusplus.com/reference/cstdio/rename/?kw=rename

Devuelve cero si se hizo correctamente y un número distinto de cero si hubo algún problema.

Muchas gracias esto me sirve mucho

pero tambien quisiera saber como hacer para saber si existe
#14
Hola a todos, me han surgido varias dudas desde que estoy aprendiendo sobre este lenguaje, una de estas dudas es que deseo hacer cosas que puedo hacer con batch en c++ porque se que en este lenguaje se puede hacer algo mucho mejor ya que batch es solo un script.

Bueno en general el problerma es deseo cambiar de nombre un archivo del system32 pero deseo que la ruta para acceder desde c++ sea dinamica y no con una letra definida como "c:\windows\system32\file.exe" sino  %windir/system32/file.exe
pero bueno cuando realizo los cambios asi:

Código (cpp) [Seleccionar]
#include "windows.h"
#include <iostream>


int main()

{
system("cd %windir% && cd system32 && ren file.exe file2.exe && echo ya ha sido cambiado");

// el problema es que no puedo recibir informacion en c++ si pregunto si ya se ha cambiado el archivo

/*porque una de las ideas podria hacer un if dentro del system pero creo que seria
muy asqueroso escribir puro script en un lenguaje c++
*/

una forma seria
system("cd %windir% && cd system32 && if exist file2.exe (echo ya fue cambiado && set a =1) else (echo no ha sido cambiado &&  ren file.exe file2.exe && set a =2)

// el problema en lo anterior es que si hago otro system("codigo"); sde pierde la posicion es como si abriera otra ventana de cmd

cin.get();
return 0;

}



Cualqueir ayuda es bienvenida es que no conozco algunas funciones que creo deben de existir para el manejo de archivos y demas se que en C hay algo FILE pero pues si alguien me puede dar una referencia para consultar ose algun Link le agradeceria mucho
#15
Hola que tal amigos, lo que sucede es que estoy haciendo un programa que modifica un archivo pero para poder modificarlo primero verifico que exista con el nombre que se va a modificar para no repetir
ejemplo:
*******************************************************
archivo original:                                    fichero.exe

archivo modificado o renombrado:         fichero2.exe

si existe   fichero2.exe   entonces Mostrar mensaje no se puede modificar ya que esta modificado

SINO entonces modificar o renombre por fichero2.exe
********************************************************

y luego hay otra opcion
que dice si desea reestablecerlo
*******************************************************
PARA RESTABLECER CON PREVIA MODIFICAION
archivo original:                                    fichero2.exe

archivo modificado o renombrado:        fichero.exe

si existe   fichero2.exe   entonces modificar o renombre por fichero.exe

SINO entonces  Mostrar mensaje no se puede modificar ya que NO SE HA MODIFICADO
******************************************************

EL PROBLEMA: cuando se realiza una de las opciones primero funciona, pero cuando regresa al menu para selecionar otra opcion no funciona porque muestra el mensaje de error de cada funcion

pero cuando cierro el programa y vuelvo a abrirlo funciona perfectamente la primera vez de ahi en adelante no funciona para nada

una de las funciones que utilizo para verificar si existe es la siguiente:

#include <fstream>
#include <iostream>

bool file_exists(const char * f){
    ifstream file;
    file.open(f);
    if(file.fail())
        return false;
    file.close();
    return true;
}
int main()
{
bool j;

bool j= file_exist("c:\\fichero2.exe");

if (j)
{
cout << "No se puede renombrar ya que esta renombreado" << endl;
}
else {
// se ejecuta los comandos de renombre
}

}


##############
Por ahora una solucion burda que he hecho es llamar a un archivo externo en bat para que me cierre el program y lo vuelva a abrir para la solucion pero si alguien me puede dar alguna idea se lo agradezco mucho

P.D si necesitan mas datos solo comenten