Renommer un fichier sous DOS [Fermé]

Signaler
-
Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
-
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

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
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

essayes de remplacer les " du nom par des \"

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

devient:
system("RENAME fichier1.jpg \"ca marche.jpg\" ");
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
938
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.
J'ai le meme pb que toi concernant les espaces lorsque je veux renommer un fichier. Si tu trouve une solution, repond moi!
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
Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 320
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" ?