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!
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
0