cuq
Messages postés345Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention21 mars 2008
-
23 févr. 2005 à 19:27
cuq
Messages postés345Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention21 mars 2008
-
24 févr. 2005 à 08:42
Ceci n'est pas vraiement une question mais plus une info. Cela fait suite a un truc qui m'est arrivé : je voulais créer un répertoire en VB pour stocker des infos temporaires et j'ai voulu utiliser un nom pour mon répertoire "nul" : impossible de créer le répertoire j'utilisai la fonction : CreateDirectory et en plus cette salope de fonction me retournai 1 pour dire pas de problème je l'ai créé ton répertoire à la con . Lassé de ne pas trouvé le pourquoi du comment j'ai changé le nom en "bidon" et là ca marche . J'ai finalement trouvé l'info :
De DOS à Windows XP, tous les systèmes refuseraient de créer un fichier ou un dossier nommé "con" ainsi que "nul" Ces différentes variables seraient réservées au système d'exploitation.
Et vous pouvez le testé sur votre PC.. pas pasooble de créer un répertoire ayant comme nom "con" ou "nul "
Et Idem en VB avec C
reateDirectory .. le truc bizarre c'est que C
reateDirectory retourne 0 si tu utilises comme nom "con" et 1 si tu utilises "nul" mais sans pour autant créer le répertoire .
Pour ceux qui veulent tester en VB dans une feuille VB rajouter un bouton et le code suivant :
'Declaration
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Sub Command1_Click()
Dim ret As Long
Dim Security As SECURITY_ATTRIBUTES
'Creation du répertoire à la Con c'est le cas de le dire
ret = CreateDirectory("C:\con", Security)
'Normalement si pas possible de créer le répertoire retourne 0 ici c'est bon
If ret = 0 Then MsgBox "C'est Con hein !", vbCritical + vbOKOnly
'Creation du répertoire nul c'est le cas de le dire
ret = CreateDirectory("C:\nul", Security)
'Normalement si pas possible de créer le répertoire retourne 0
If ret = 1 Then MsgBox "C'est encore plus nul hein !", vbCritical + vbOKOnly
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 23 févr. 2005 à 21:45
Remarque sur le NUL et le commentaire de Casy < Comme tout informaticien le sait Chaque dossier depuis le DOS contient "un fichier" virtuel" si on peut dire, dont le nom est "NUL". Celui-ci est non visible, lors d'une lecture du contenu d'un dossier (sous DOS, windows toute version) quelle que soit la méthode employé. En fait il n'y a qu'une seul façon de le détecter (et c'est a cela qu'il sert en pratique !)
En DOS , il existe une Commande nommée "IF EXIST UnNomDeFichier UneCommande" Qui execute UneCommande si "UnNomDeFichier" est le nom d'un fichier existant !! Or les programmeur aime parfois tester l'existance d'un répertoire, plutot que d'un fichier, alors comme IF EXIST n'accepte que le nom d'un fichier en argument, on utilise le fichier NUL.
IF EXIST c:\Windows\NUL Echo "Dossier Windows OK" affichera "Dossier Windows OK" si un dossier c:\windows\ existe sur la machine !!
Pour conclure : Son CreateDirectory se fout du fait que "Nul" soit le mot-réservé de la redirection dans les abysses intersidérale d'une sortie de commande ! Ce qui l'empeche de créer en répertoire nommé NUL, c'est que quelque soit le dossier ou tu te trouve, un fichier nommé NUL est présent et détecté par les opérations disques de bas-niveau de la machine.
Tout informaticien sait cela !!
maintenant, il reste un mystère !! Pourquoi CreateDirectory() ne déclenche pas d'érreur du type "Invalid Dir Path" !! Le pire, c'est que sous une commande DOS, un "MKDIR NUL" ne plante pas non plus !!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 févr. 2005 à 22:19
Il n'y a rien de mysterieux, les noms interdits sont spécifiés dans MSDN par le lien 'Naming a file' depuis la page de CreateDirectory():
The following reserved device names cannot be used as the name of a file: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Also avoid these names followed by an extension (for example, NUL.tx7).
Windows NT: CLOCK$ is also a reserved device name.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 févr. 2005 à 19:45
Evidemment, tout informaticien sait ça
Le périphérique Nul ou NULL est un péripherique qui sert à orienter une
sortie vers 'pas de sortie', en fait les données sont envoyer comme
vers un fichier mais elle se perdent dans les abbysses.
Le périphérique Con est la console c'est à dire habituellement le clavier en entrée, et l'écran en sortie.
Ca existe depuis DOS jusqu'a Win XP, mais sous unix aussi je crois ainsi que sur d'autre système.
<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 23 févr. 2005 à 20:34
Allez savoir, si ca se trouve, Windows a un dictionnaire de gros mot
intégré pour empêcher de créer des noms de dossiers qui peuvent porter
préjudice à Microsoft... lol
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 févr. 2005 à 22:04
Tout à fait
Il sert aussi dans les fichiers batch à rediriger la sortie de
certaines commandes très bavardes pour les éxécuter de façon
silencieuse.
Petite précision encore Christophe, quoique tu fasse, quoique tu écrive
dans ce ficher (même un roman) il aura toujours une taille de 0 octets
d'où le terme se perdent dans les abbysses.
Ce fichier était quelque fois visible avec certains
éditeurs ('physiques') de disques sous DOS (norton ou pctools entre
autre) tout dépend de la manip que tu faisais.
MKDIR Nul marche sous la console de windows mais ne crée pas le répertoire quand même.
A voir sous DOS.
Par contre MKDIR NULL marche très bien, pourtant il me semble que sous DOS ça ne marchait pas.
<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.
cuq
Messages postés345Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention21 mars 20082 24 févr. 2005 à 08:42
Ha ben ca c'est du commentaire constructif ....
Merci en particulier pour les commentaires de crenaud76 et de BruNews
Par contre la doc de windows doit pas êter UP-TO-DATE car dans les interdits tu as aussi com0 et lpt0 ( enfin sur mon pc en XP et en 2000 ca marche pas ) et CLOCK$ sur XP et 2000 ca marche ..