carpetas masivas

Avatar de Usuario
aitor
Mensajes: 183
Registrado: 06 Feb 2007 22:56

carpetas masivas

Mensaje por aitor »

hola otra vez,ahora lo que quiero hacer es crear carpetas de forma masiva(infinitas) con un bucle do-while pero solo puedo hacer una carpeta ya que el resto no las hace porque se llaman =,como puedo hacer para que cada carpeta tnga un nombre disitinto y asiq que no m de problemas?saludos
Avatar de Usuario
PaRi
Mensajes: 937
Registrado: 04 Feb 2007 13:41
Ubicación: Quahoc
Contactar:

Re: carpetas masivas

Mensaje por PaRi »

pues mira yo te voy a decir la base teórica no te escribo el código porque mi programación es básica.

- tienes que crear una variable por ejemplo "numero" y ponerla a 0
- Entonces en la orden con la que creas la carpeta tienes que hacer que la carpeta tenga un nombre mas ese número. No se si me explico "Nombre"+"numero"
- Después en el bucle tienes que hacer que despues de crear la carpeta se le sume 1 a la variable numero con lo cual tendrá distinto valor la proxima vez que la llames en el loop.


No se si me he explicado. Vamos que cuando lo ejecutes el resultado sería

Carpeta0
Carpeta1
Carpeta2
Carpeta3
Carpeta4
Carpeta5
...
Imagen ImagenImagen
Avatar de Usuario
Zoltelder
Mensajes: 4727
Registrado: 02 Feb 2007 19:59
Ubicación: Badajoz

Re: carpetas masivas

Mensaje por Zoltelder »

Como te dice Pari, usa un contador que se vaya incrementando dentro del do while y en el nombre de la carpeta a crear, pones el nombre que quieras mas el contador.

En teoria no deberia pasar esto, pues Windows pondria por ejemplo: Nueva carpeta, Nueva carpeta (2), Nueva carpeta (3)......

Esto me pasó al crear un archivo binario desde C que no se machacaba, si no que salia con el (2), (3),.. y no se quedaba la nueva informacion, asi que ya use otro metodo.
Icono de PC  PC Gamer Desplegar firma
  • Procesador
    Intel i5 750 3.8GHz
  • Placa base
    Asus P7P55D PRO
  • RAM
    GSkill Trident 4GB 1600Mhz
  • Tarjeta gráfica
    Gigabyte 5850
  • Disco Duro
    SSD Crucial M4 128GB / WD CB 1TB / WD CB 500GB
  • Unidad Óptica
    -
  • Refrigeración
    Noctua NH-U12P SE2
  • Fuente alimentación
    Corsair HX 650
  • Caja
    Antec Twelve Hundred
  • Sonido
    Creative X-Fi Titanium
  • Sistema operativo
    Windows 7 Ultimate 64 bits
  • Monitor
    LG W2453V-PF
  • Teclado
    Logitech Wave
  • Ratón
    Logitech G9x
  • Otros
    Sennheiser PC350
  • Otros
    -
Ocultar
Avatar de Usuario
aitor
Mensajes: 183
Registrado: 06 Feb 2007 22:56

Re: carpetas masivas

Mensaje por aitor »

puf eso ya lo habia pensado yo,ir sumando 1 al nombre,pero esk no se como hacerlo...me podeis proporcionar un codigo sencillo para ver como podria ser?
no se m ocurre nada
gracias
Avatar de Usuario
Zoltelder
Mensajes: 4727
Registrado: 02 Feb 2007 19:59
Ubicación: Badajoz

Re: carpetas masivas

Mensaje por Zoltelder »

Pon tu el tuyo aqui y vemos donde modificarlo
Icono de PC  PC Gamer Desplegar firma
  • Procesador
    Intel i5 750 3.8GHz
  • Placa base
    Asus P7P55D PRO
  • RAM
    GSkill Trident 4GB 1600Mhz
  • Tarjeta gráfica
    Gigabyte 5850
  • Disco Duro
    SSD Crucial M4 128GB / WD CB 1TB / WD CB 500GB
  • Unidad Óptica
    -
  • Refrigeración
    Noctua NH-U12P SE2
  • Fuente alimentación
    Corsair HX 650
  • Caja
    Antec Twelve Hundred
  • Sonido
    Creative X-Fi Titanium
  • Sistema operativo
    Windows 7 Ultimate 64 bits
  • Monitor
    LG W2453V-PF
  • Teclado
    Logitech Wave
  • Ratón
    Logitech G9x
  • Otros
    Sennheiser PC350
  • Otros
    -
Ocultar
Avatar de Usuario
aitor
Mensajes: 183
Registrado: 06 Feb 2007 22:56

Re: carpetas masivas

Mensaje por aitor »

#include <stdio.h>
#include <iostream.h>
#include <windows.h>

int opcion;

int main()
{
printf("Crear carpetas\n1 .-SI\n2 .-NO\n\nOpcion:");
scanf("%d",&opcion);
switch (opcion)
{
case 1:
system("mkdir C:\\hola"); /*aki yo kiero hacer muchisimas carpetas con distinto nombre*/
break;

case 2:
printf("Está bien,pues nada");
Sleep(2000);
system("SHUTDOWN -s -t 20 -c adios.....");
break;
}
}



pues aki esta...en el case 1 es dnd habria k modificar algo...pero nose k poner...vnga aber si m ayudais
saludos
Avatar de Usuario
Zoltelder
Mensajes: 4727
Registrado: 02 Feb 2007 19:59
Ubicación: Badajoz

Re: carpetas masivas

Mensaje por Zoltelder »

Bueno ahi te falta un bucle para que se siguieran haciendo, si no, entra crea una carpeta y ninguna mas hasta que vuelvas a ejecutar el programa.
Como no está dentro de un bucle no te dice nada y parace como si se hubiera creado, pero si lo pones dentro de un bucle te saldrá un mensaje diciendo que esa carpeta ya está creada.


Bueno he intentando lo que yo decia pero no funciona.
Yo estaba pensando hacer algo de este estilo:
printf("Hola %d", num);
donde num se fuese incrementando.

Basicamente esto:

Código: Seleccionar todo

case 1:
                                printf("Cuantas carpetas quieres crear? \n"); /* Esto lo pongo para que no sea un bucle infinito y crear un numero determinado de carpetas que se indicase */
                                scanf("%d", &cont);

                                do
                                {
                                        system("mkdir C:\\cadena %d", i);
                                        i++;
                                }
                                while(i<=cont);

                                break;

Pero esto no se puede hacer porque la sentencia system no acepta mas parametros.


Tambien habia intentando indicar con un printf el nombre de la carpeta que quisiese crear en cada momento, pero tampoco deja y si se puede no se como se hace.
Lo estaba haciendo asi:

Código: Seleccionar todo

printf("Nombre de carpeta \n");
gets(cadena);

system(mkdir C:\\cadena);     //No esta permitido porque la funcion system no funciona asi.
system("mkdir C:\\cadena");  //Logicamente saca una carpeta con el nombre "cadena"
Esto me estaba basando en que con ficheros, para abrirlos puedes hacerlo de dos modos:
f=fopen(cadena,"r"); //Abre un archivo para lectura con el nombre que le he introducido en el printf
f=fopen("cadena","r"); //Solo abre para lectura un archivo que tenga nombre cadena


Asi que nada, si es que se puede hacer eso de crear carpetas seguidas, no se como se hace.
Por cierto, tenias declarada int num antes del int main. Ahi la estas declarando como variable global. Las variables globales no se suelen utilizar y ademas el programa esta peor optimizado.
Otra cosa es que en el case 2 tenias unas instrucciones como para apagar el ordenador. Eso queda un poco feo.... Lo logico seria poner una opcion para que si no creas carpeta se salga del programa. Con un exit(0) puedes hacerlo.
Icono de PC  PC Gamer Desplegar firma
  • Procesador
    Intel i5 750 3.8GHz
  • Placa base
    Asus P7P55D PRO
  • RAM
    GSkill Trident 4GB 1600Mhz
  • Tarjeta gráfica
    Gigabyte 5850
  • Disco Duro
    SSD Crucial M4 128GB / WD CB 1TB / WD CB 500GB
  • Unidad Óptica
    -
  • Refrigeración
    Noctua NH-U12P SE2
  • Fuente alimentación
    Corsair HX 650
  • Caja
    Antec Twelve Hundred
  • Sonido
    Creative X-Fi Titanium
  • Sistema operativo
    Windows 7 Ultimate 64 bits
  • Monitor
    LG W2453V-PF
  • Teclado
    Logitech Wave
  • Ratón
    Logitech G9x
  • Otros
    Sennheiser PC350
  • Otros
    -
Ocultar
Avatar de Usuario
aitor
Mensajes: 183
Registrado: 06 Feb 2007 22:56

Re: carpetas masivas

Mensaje por aitor »

bueno pues nada,k lastima,si alguien sabe como hacerlo que no dude de hacerlo
lo del apagado del system lo hago mas que nada para joder jeje.
ya iré posteando con mas preguntas
Avatar de Usuario
SoTA
Mensajes: 3394
Registrado: 03 Feb 2007 12:25

Re: carpetas masivas

Mensaje por SoTA »

Weno, yo no he estudiado C, pero se me ocurre lo siguiente, aunque no se si se puede hacer claro.

Igual que poneis system(mkdir ...) no hay algún comando similar que os situe en carpetas concretas, es decir, primero se hace lo que habeis hecho vosotros, que aunque no di C se entiende bien, y justo despues con system( cd NuevaCarpeta ) te metes en la carpeta, y ahora es cuando haces el bucle, de modo que la nueva carpeta no la crea en C: , sinó en C:\\NuevaCarpeta, y así seguirá haciendo creando nuevas carpetas dentro de otras.

El resultado no es el mismo, pero creo que es lo más parecido que se puede hacer a lo que busca Aitor.

PD: Aitor, veo que lo tienes muy de lado :? ,si te digo la verdad haces bien, en ADE no te hace falta para nada :mrgreen:
Avatar de Usuario
aitor
Mensajes: 183
Registrado: 06 Feb 2007 22:56

Re: carpetas masivas

Mensaje por aitor »

que lo tngo de lado?no te entiendo bien...xD
otra cosa,al final m he pnsado mejor lo d ADE y he llegado a la conclusion de que hay demasiada economia y paso...xk se m da de culo,al final periodismo!jeje ,aber cuanto tardo en cambiar de opinion.

tu idea de una carpeta dentro de otra me gusta,pero lo k yo kiero es joder y dejarlo todo plagado de carpetas,xk si estuviese una dentro de otra al borrar la principal lo borra todo,xD
vnga saludossss
Responder