bonjour !
Je cherche à créer un répertoire qui est nommé par la date du jour...
Si vous avez des pistes, je suis preneur...
Merci;)
Version imprimable
bonjour !
Je cherche à créer un répertoire qui est nommé par la date du jour...
Si vous avez des pistes, je suis preneur...
Merci;)
Voila du code qui créé un fichier en fonction du temps :
En gros : GetLocalTime() + sprintf() = la puissance!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 // Création du fichier historique HANDLE hFind; WIN32_FIND_DATA FindFileData; SYSTEMTIME Time; TCHAR NomFichier [64]; DWORD Tmp; hFind = FindFirstFile (RS232_RAPPORT_DOSSIER, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { if (CreateDirectory (RS232_RAPPORT_DOSSIER, NULL) == 0) { MessageErreurWindow (hWnd, _T("Impossible de créer le répertoire de traçage."), _T("Fonction RS232_Initialisation()"), TRUE); return EXIT_FAILURE;} } else if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { MessageErreurWindow (hWnd, _T("Un petit malin veut faire planter intentionnellement le programme."), _T("Fonction RS232_Initialisation()"), FALSE); return EXIT_FAILURE; } // Crée le fichier GetLocalTime (&Time); if ( _stprintf_s (NomFichier, 64, _T("%s\\hist_%02d_%02d_%02d__%02d_%02d_%02d.txt"), RS232_RAPPORT_DOSSIER, Time.wDay, Time.wMonth, Time.wYear%100, Time.wHour, Time.wMinute, Time.wSecond) == -1 ){ MessageErreurWindow (hWnd, _T("Erreur dans la création du fichier (100)."), _T("Fonction RS232_Initialisation()"), FALSE); return EXIT_FAILURE; } if ((Rapport = CreateFile (NomFichier, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE){ MessageErreurWindow (hWnd, _T("Erreur dans la création du fichier (200)."), _T("Fonction RS232_Initialisation()"), TRUE); return EXIT_FAILURE; } WriteFile (Rapport, RS232_RAPPORT_ENTETE, RS232_RAPPORT_ENTETE_TAILLE * sizeof (TCHAR), &Tmp, NULL); WriteFile (Rapport, _T("Début du rapport des communications RS232.\r\n"), 44 * sizeof (TCHAR), &Tmp, NULL);
Un conseil: Mettre l'année sur quatre chiffres et non deux.
De plus, pour un meilleur tri des fichiers, utiliser un format année-mois-jours est recommandé (typiquement AAAA-MM-JJ)
Tout à fait exact.
J'avais du pondre ce code en vitesse, et j'avais pas fait attention à ça.
merci pour ces réponses !
J suis débutant en c. J'ai copié collé le code mais toutes les lignes buggent.
Je créé mes codes en C sur dev-c++
Merci:cry:
Oui, forcement, on ne peut pas copier-coller des lignes comme ça...
Ce dont tu as besoin se présenterai un peu comme ça :
Je n'ai pas testé, mais dans la logique c'est ça. Par contre il n'y a pas de test d'erreur.Code:
1
2
3
4
5 SYSTEMTIME Time; char NomDossier[64]; GetLocalTime (&Time); sprintf (NomDossier, "%04d_%02d_%02d.txt", Time.wYear, Time.wMonth, Time.wDay); CreateDirectory (NomDossier, NULL);
ca bloque direct à la 1ere ligne.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <math.h> main() { SYSTEMTIME Time; char NomDossier[64]; GetLocalTime (&Time); sprintf (NomDossier, "%04d_%02d_%02d.txt", Time.wYear, Time.wMonth, Time.wDay); CreateDirectory (NomDossier, NULL); return; }
- SYSTEMTIME est un type Windows.
- GetLocalTime() et CreateDirectory() sont des fonctions Windows également
- Donc, il faut inclure <windows.h>
- main() retourne un int. Toujours
- <malloc.h> n'est pas standard. malloc() est déclarée dans stdlib.h
ok merci pour ces précisions...cependant ce code va tourner sur dos donc pas de librairie windows.h possible...
Connaitriez-vous une autre méthode ?
Encore merci pour vos réponses !
en fait en ecumant un peu mieux les pages du net, j'ai trouvé comment faire via un fichier.bat
Mais je ne sais pas comment le lancer à la fin de mon code en c.
Merci à vous !
bon...c'est promis, j'arrête de poser des questions pour rien...
Merci à vous:oops:Code:system("c:\\a.bat");