Supprimer grâce au C++
ptirob91
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
ptirob91 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
ptirob91 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterai créé un programme en C++ qui effacerai n'importe quel fichier ou dossier car tout le temps faire supprimer puis aller dans la corbeil m'ennuis fortement (c'est vous dire si je le fais souvent)
Mon programme actuel est :
#include<stdio.h>
#include<stdlib.h>
#include<direct.h>
int main ()
{
printf("Le fichier ou dossier est effacer.\n\n");
{ _rmdir("dossier_test");
}
system("PAUSE");
return 0;
}
voilà, mais cela ne fonctionne pas, quelqu'un pourrait m'aider?
j'aimerai ausqsi (en option si vraiment c'est possible) qu'il m'affiche une mini fenetre type msDos pour que je tape le nom du fichier/dossier.
Merci de vos réponses
ptirob91
Je souhaiterai créé un programme en C++ qui effacerai n'importe quel fichier ou dossier car tout le temps faire supprimer puis aller dans la corbeil m'ennuis fortement (c'est vous dire si je le fais souvent)
Mon programme actuel est :
#include<stdio.h>
#include<stdlib.h>
#include<direct.h>
int main ()
{
printf("Le fichier ou dossier est effacer.\n\n");
{ _rmdir("dossier_test");
}
system("PAUSE");
return 0;
}
voilà, mais cela ne fonctionne pas, quelqu'un pourrait m'aider?
j'aimerai ausqsi (en option si vraiment c'est possible) qu'il m'affiche une mini fenetre type msDos pour que je tape le nom du fichier/dossier.
Merci de vos réponses
ptirob91
A voir également:
- Supprimer grâce au C++
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Supprimer pub youtube - Accueil - Streaming
- Fichier impossible à supprimer - Guide
- Supprimer compte instagram - Guide
12 réponses
Salut,
Quand tu effaces un fichier, en appuyant sur shift + suppr, il ne passera pas par la corbeille.
Sinon le programme que tu veux faire existe déjà sur windows. Il s'agit de la commande del.
Tu ouvres une fenêtre (cmd), et tu écris : rm fichierASuppr
Sinon, si tu souhaites quand même faire un programme, utilise la fonction remove()
remove(chemin) pour supprimer un fichier et rmdir(chemin) pour supprimer un répertoire (il doit être vide).
Pour la fenêtre, c'est simple, c'est automatique. Il te suffit juste de demander à l'utilisateur d'entrer une chaîne de caractères (fgets) et voilou.
Cdlt
Quand tu effaces un fichier, en appuyant sur shift + suppr, il ne passera pas par la corbeille.
Sinon le programme que tu veux faire existe déjà sur windows. Il s'agit de la commande del.
Tu ouvres une fenêtre (cmd), et tu écris : rm fichierASuppr
Sinon, si tu souhaites quand même faire un programme, utilise la fonction remove()
remove(chemin) pour supprimer un fichier et rmdir(chemin) pour supprimer un répertoire (il doit être vide).
Pour la fenêtre, c'est simple, c'est automatique. Il te suffit juste de demander à l'utilisateur d'entrer une chaîne de caractères (fgets) et voilou.
Cdlt
Marcii
mais si je souaite supprimer un dossier plein? il faut que je mette le nom de tout les fichiers en remove() puis ensuite le nom du dossier en _rmdir()?
du genre (vite fait):
{
{remove (fichier_test);
};_rmdir(dossier_test);
}
??
mais si je souaite supprimer un dossier plein? il faut que je mette le nom de tout les fichiers en remove() puis ensuite le nom du dossier en _rmdir()?
du genre (vite fait):
{
{remove (fichier_test);
};_rmdir(dossier_test);
}
??
Bonjoir !
sinon, j'ai vu dans la commande cmd, j'ai chercher le programme et du coup j'ai deux quesiton supplémentaire:
Comment ouvrir un programme de façon a lire son code?
Quel est le petit nom du programme qui correspond a "erase" ou "rd" sur la commande cmd?
Merci a bientôt !
sinon, j'ai vu dans la commande cmd, j'ai chercher le programme et du coup j'ai deux quesiton supplémentaire:
Comment ouvrir un programme de façon a lire son code?
Quel est le petit nom du programme qui correspond a "erase" ou "rd" sur la commande cmd?
Merci a bientôt !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
La fonction n'est pas _rmdir mais rmdir.
Il faut que le dossier soit vide, chose que tu peux faire par une récursivité sur l'ensemble des fichiers à l'intérieur du dossier que tu supprimeras.
Sinon, tu peux utiliser la fonction API SHFileOperation. Mais, elle n'est pas plus facile d'utilisation que la méthode précédente.
La fonction system, aussi facilement qu'elle peut résoudre ton problème, est à bannir en C ;-))).
Cdlt
La fonction n'est pas _rmdir mais rmdir.
Il faut que le dossier soit vide, chose que tu peux faire par une récursivité sur l'ensemble des fichiers à l'intérieur du dossier que tu supprimeras.
Sinon, tu peux utiliser la fonction API SHFileOperation. Mais, elle n'est pas plus facile d'utilisation que la méthode précédente.
La fonction system, aussi facilement qu'elle peut résoudre ton problème, est à bannir en C ;-))).
Cdlt
Bonjour,
Pour un fichier (exemple) :
char fichier [60];
cin >> fichier;
remove(fichier);
return 0;
// En incluant tout le reste tel que librairies etc.
Pour un dossier :
char dossier [60];
char toRemove [70];
cin >> dossier;
sprintf(toRemove, "rd %s", dossier);
system(toRemove);
return 0;
//Ou qq chose dans le genre...
Pour un fichier (exemple) :
char fichier [60];
cin >> fichier;
remove(fichier);
return 0;
// En incluant tout le reste tel que librairies etc.
Pour un dossier :
char dossier [60];
char toRemove [70];
cin >> dossier;
sprintf(toRemove, "rd %s", dossier);
system(toRemove);
return 0;
//Ou qq chose dans le genre...
Attention, la fonction system est à bannir du C/C++ ;-))).
Il vaut mieux utiliser les fonctions standards, et si besoin les fonctions spécifiques au système, voire API.
Voici un lien : https://cpp.developpez.com/faq/vc#DeleteNoEmptyDirectory
Cdlt
Il vaut mieux utiliser les fonctions standards, et si besoin les fonctions spécifiques au système, voire API.
Voici un lien : https://cpp.developpez.com/faq/vc#DeleteNoEmptyDirectory
Cdlt
Petite précision : cela ne fonctionne pas avec des espaces.
Pour y remédier, utilise des string en les demandant avec :
string tonStr;
getline(cin, tonStr);
il existe une fonction qui convertit les string en char.
Bonne continuation.
Pour y remédier, utilise des string en les demandant avec :
string tonStr;
getline(cin, tonStr);
il existe une fonction qui convertit les string en char.
Bonne continuation.
Bonjour fiddy,
tu serais gentil de me dire comment remplacer ces commandes-ci en C++ que j'utilise tous les jours :
system("pause"); // Attend la pression d'une touche pour continuer
system("title Mon titre"); // Le titre de la fenêtre devient : "Mon titre"
system("cls"); // Efface l'écran
system("rd qq_chose"); // Supprime un dossier (sujet de cette conversation)
Voila.. Merci d'avance :)
tu serais gentil de me dire comment remplacer ces commandes-ci en C++ que j'utilise tous les jours :
system("pause"); // Attend la pression d'une touche pour continuer
system("title Mon titre"); // Le titre de la fenêtre devient : "Mon titre"
system("cls"); // Efface l'écran
system("rd qq_chose"); // Supprime un dossier (sujet de cette conversation)
Voila.. Merci d'avance :)
system("pause"); // Attend la pression d'une touche pour continuer
getch(); qui se trouve dans conio.h
system("title Mon titre"); // Le titre de la fenêtre devient : "Mon titre"
SetConsoleTitle() de windows.h : https://docs.microsoft.com/en-us/windows/console/setconsoletitle?redirectedfrom=MSDN
system("cls"); // Efface l'écran
un petit lien : https://c.developpez.com/faq/?page=Gestion-du-clavier-et-de-l-ecran-en-mode-console#CONS_clear_screen
system("rd qq_chose"); // Supprime un dossier (sujet de cette conversation)
Si le dossier n'est pas vide : https://cpp.developpez.com/faq/vc#DeleteNoEmptyDirectory
Quand le dossier est vide, on peut utiliser la fonction standard : rmdir()
Cdlt,
getch(); qui se trouve dans conio.h
system("title Mon titre"); // Le titre de la fenêtre devient : "Mon titre"
SetConsoleTitle() de windows.h : https://docs.microsoft.com/en-us/windows/console/setconsoletitle?redirectedfrom=MSDN
system("cls"); // Efface l'écran
un petit lien : https://c.developpez.com/faq/?page=Gestion-du-clavier-et-de-l-ecran-en-mode-console#CONS_clear_screen
system("rd qq_chose"); // Supprime un dossier (sujet de cette conversation)
Si le dossier n'est pas vide : https://cpp.developpez.com/faq/vc#DeleteNoEmptyDirectory
Quand le dossier est vide, on peut utiliser la fonction standard : rmdir()
Cdlt,
La méthode officielle est avec les apis win32 : demander sur le groupe Pro des apis Win32 https://www.ovh.co.uk/mail/
(code Mirosoft...)
(code Mirosoft...)
La méthode officielle est avec les api Win32.
Mais on croit rêver. Faut arrêter de penser que Windows est derrière le C/C++.
Une méthode officielle en C/C++ est une méthode standard, qui est portable. Loin d'être le cas avec les api Win32.
Par contre, il est vrai qu'elles rendent, bien service comme : https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa?redirectedfrom=MSDN
Mais ce n'est certainement pas une méthode officielle, peut-être sur windows, mais guère plus...
Mais on croit rêver. Faut arrêter de penser que Windows est derrière le C/C++.
Une méthode officielle en C/C++ est une méthode standard, qui est portable. Loin d'être le cas avec les api Win32.
Par contre, il est vrai qu'elles rendent, bien service comme : https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shfileoperationa?redirectedfrom=MSDN
Mais ce n'est certainement pas une méthode officielle, peut-être sur windows, mais guère plus...
Sauf, que je n'ai jamais dit que c'était la méthode officielle ^^.
Il n'existe pas de méthode standard en C/C++ pour renommer une fenêtre puisque ces langages n'ont pas connaissance des consoles. Il faut donc utiliser les interruptions du noyau.
Mon pitit coup de gueule, c'est que cette personne-là avec sa bande n'arrêtent pas dire que les méthodes officielles sont via les API win32 et redirigent vers les newsgroup. Alors qu'en rien il s'agit de méthode officielle ^^.
Il n'existe pas de méthode standard en C/C++ pour renommer une fenêtre puisque ces langages n'ont pas connaissance des consoles. Il faut donc utiliser les interruptions du noyau.
Mon pitit coup de gueule, c'est que cette personne-là avec sa bande n'arrêtent pas dire que les méthodes officielles sont via les API win32 et redirigent vers les newsgroup. Alors qu'en rien il s'agit de méthode officielle ^^.