C/Visual C - Renombrado masivo

   
Vista:

Renombrado masivo

Publicado por Jose (8 intervenciones) el 28/10/2009 20:18:03
Buenas noches, necesito modificar este programa, para poder renombrar varios archivos, deberia de ser asi:

nombre_programa archivos( *.mp3) -otexto(origen -dtexto1), con 4 parametros de entrada obligatorios, el codigo actual es:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Definició de paràmetres

#define NUMPARAMKO 1
#define PARAMNOVALID 2
#define FALTAPARAMOBLIG 3
#define SINTAXIPARAMDINC 4 // Sintaxi del paràmetre d no correcte
#define SINTAXIPARAMFINC 5 // Sintaxi del paràmetre f no correcte
#define PARAMREPE 6

int comprova_parametre_opcional(char *);
int es_parametre_opcional(char *);
void error_fatal(int, char*);

int opcioo=0,opciod=0;
char cadenaopcioo[100]; // Per desar la cadena del parametre opcional -d
char cadenaopciod[100]; // Per desar la cadena del parametre opcional -f

main(int argc, char *argv[])
{

int parametre=0;
int numparam,ultim;

//Control·la número de paràmetres
if (argc<4) error_fatal(NUMPARAMKO,"");

//Recorrem tots els parametres
while (parametre < argc-1)
{

parametre +=1;
// Si el paràmetre analitzat no comença per '-' surt del bucle amb valor ultim=0
ultim=0;
if (!es_parametre_opcional(argv[parametre])) break;
//Per diferenciar el sortir amb break o per la condicio parametre < argc-1
ultim=1;
// Comença per '-'

if ((numparam=comprova_parametre_opcional(argv[parametre]))==0)
error_fatal(PARAMNOVALID,argv[parametre]);
else
{
// El parametre es correcte i podem alterar
// alguna variable per a que a l'operativa
// del comandament sàpiga que aquesta opció
// ha estat seleccionada

switch (numparam)
{
// Ara cal comprovar que el següent
// paràmetre sigui vàlid.

case 1:
//Escollida opcio -o

if (opcioo==1) error_fatal(PARAMREPE,"-o");
opciod=1;
if (parametre<argc-1) //Si no és el darrer paràmetre
{
parametre +=1;
if (es_parametre_opcional(argv[parametre]))error_fatal(SINTAXIPARAMDINC,"-o");
else strcpy(cadenaopcioo,argv[parametre]); //El copia per a us posterior

}
else
{
// Era el darrer paràmetre.
error_fatal(SINTAXIPARAMDINC,"-o");
}

break;

case 2:
//Escollida opcio -d
if (opciod==1) error_fatal(PARAMREPE,"-d");
opciod=1;
if (parametre<argc-1) //Si no és el darrer paràmetre
{
parametre +=1;
if (es_parametre_opcional(argv[parametre])) error_fatal(SINTAXIPARAMFINC,"-d");
else strcpy(cadenaopciod,argv[parametre]); //El copia per a us posterior
}
else
{
// Era el darrer paràmetre.
error_fatal(SINTAXIPARAMFINC,"-d");
}

break;
}

}

}

// comprovar si queda almenys un paràmetre més
if ((parametre >= argc-1) && ultim==1) error_fatal(FALTAPARAMOBLIG,"");

printf ("All OK\n");

}

void error_fatal(int codi,char *missatge)
{ //Mostra error i surt del programa
static char error[][50]= { "","Número de paràmetres incorrecte",
"Paràmetre no vàlid",
"Falta nom (s) de fitxer(s)",
"Paràmetre -o mal escrit",
"Paràmetre -d mal escrit",
"Paràmetre repetit"
};

printf("%s: %s\n",error[codi],missatge);
exit(-codi);

}

int comprova_parametre_opcional(char *param)
{ //Retorna 0 si el paràmetre no existeix
// Retorna > 0 si el paràmetre és vàlid

char parametre[10][10] = { "","o","d" };
int numparam=2;


if (param[1]=='-')
{
// Comprova parametres amb dos '-'
}
else
{
int i;

for (i=1; i<numparam+1; i++)
{
if (strcmp(param+1,parametre[i])==0) return i;

}

}
return 0;

}

int es_parametre_opcional(char *param)
{ //Si el paràmetre comença per '-' retorna 1
// En cas contrari retorna 0.

if (param[0]!='-') return 0;
else return 1;

}

Muchas gracias!
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