Renommer un fichier sous DOS

Fermé
David - 14 févr. 2003 à 22:33
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 20 sept. 2007 à 23:34
Bonjour,

Je cherche a créer un programme C qui va renommer des fichiers contenu dans un répertoire. Pour les renommer, je fais appel a une liste qui contient l'ancien nom du fichier et le nouveau a coté. Jusque là pas de problèmes, je mets ma commande : system (z) ou j'ai préalablement concaténé a z la commande "RENAME" et les paramètre "image1.jpg" "image2.jpg" qui correspondent respectivement aux anciens et nouveaux noms de fichiers.

C'ets là que je bloque : je souhaiterais pouvoir renommer mes fichier par des noms qui contiennent des espaces. Je pense que c'est possible, car la commande : "RENAME fichier1.jpg "ca marche.jpg" fonctionne, l'espace est bien géré, mais par contre, la même commande exécutée par le programme C ne fonctionne pas, il considère la suite de la commande après l'espace comme un troisième paramètre.

Qui peux m'aider ??

Merci beaucoup par avance

David
A voir également:

6 réponses

c'est bon j'ai trouver la reponse a ma question j'ai rajouter des " " entre le groupe de mot.
par exemple

rename c:\asterix et obelix.avi asterix et obelix 2.avi
cela ne fonctionne pas il faut rajoute des " " entre le tout comma ça

rename "c:\asterix et obelix.avi" "asterix et obelix 2.avi"

desoler de vous avoir deranger pour rien.
merci quand meme.

lvince81
6
essayes de remplacer les " du nom par des \"

exemple:
system("RENAME fichier1.jpg "ca marche.jpg" ");

devient:
system("RENAME fichier1.jpg \"ca marche.jpg\" ");
1
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
17 févr. 2003 à 15:34
salutatous,
Pourquoi faire du C pour utiliser system ?
Il doit exister une fonction rename dans Win$ non?
Consultez la merveilleuse information des API win$...
Recherchez sur Google , mais de grâce, n'utilisez system
qu'en dernier recourt i.e API non disponible,
programme propriétaire incontournable.... et alors ily a popen
(je ne sais pas si cela existe sous Win$)
Sous UNIX
man 2 rename
(abrégé)
RENAME(2) Linux Programmer's Manual RENAME(2)

NAME
rename - change the name or location of a file

SYNOPSIS
#include <stdio.h>

int rename(const char *oldpath, const char *newpath);

DESCRIPTION
rename renames a file, moving it between directories if required.

Any other hard links to the file (as created using link(2)) are unaffected.

If newpath already exists it will be atomically replaced (subject to a few conditions - see ERRORS below), so that there is no point at which another process attempting to access newpath will find it missing.

If newpath exists but the operation fails for some reason rename guarantees to leave an instance of newpath in place.

However, when overwriting there will probably be a window in which both oldpath and newpath refer to the file being renamed.

If oldpath refers to a symbolic link the link is renamed; if newpath refers to a symbolic link the link will be overwritten.

Voir sur le net
http://mkssoftware.com/docs/man3/rename.3.asp

Johan Daine
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
1
J'ai le meme pb que toi concernant les espaces lorsque je veux renommer un fichier. Si tu trouve une solution, repond moi!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonjour moi j'ai le probleme sans passer par du c.
je voudrais renome un fichier contenant des espaces en un autre nom avec ou sans espace comme les films par exemple.
est ce que quelqu'un pourrait m'aider s'il vous plait?

merci d'avance
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
20 sept. 2007 à 23:34
J'ai quand même une question. A quoi cela te sert-il de faire rename "c:\asterix et obelix.avi" "asterix et obelix 2.avi" ?
0