Dos dir masque, veulent “*.xxx” et non pas “*.xxxzz”
Dans mes répertoires, j'ai les noms de fichier de type *.xxx et aussi *.xxxzz
Quand je fais dir /s/b "*.xxx"
- je obtenir de l' *.xxxzz fichiers dans ma liste. Je ne PAS obtenir ces résultats dans un "Prendre les commandes" de la console, mais je n'en cmd
console.
Comment puis-je obtenir cmd
de me donner seulement *.xxx fichiers?
- Quel système d'exploitation êtes-vous sur? L'Invite de Commande Windows (
cmd
) n'est pas DOS. Qu'est-ce que le"Take Command" console
? Je peux confirmer ce comportement étrange cependant. - Windows 7. "Prendre les commandes" est un autre processeur de commande - vous pouvez le trouver sur Google 😉 Oui, c'est un comportement étrange, je me demande si le
del
masque fonctionne de la même manière! - Comme une approche alternative, vous pouvez utiliser PowerShell? Son
Get-ChildItem
(avecdir
,ls
, etgci
alias) ne semble pas présenter ce problème. Voir ss64.com/ps/get-childitem.html. Vous avez aussi d'autres options pour filtrer vos résultats (commeWhere-Object
).
Vous devez vous connecter pour publier un commentaire.
Avec la commande DIR, lorsque vous spécifiez un masque comportant une extension de trois caractères, vous obtiendrez correspond à des fichiers qui contiennent des extensions avec trois ou plus personnages, aussi longtemps que les trois premiers caractères correspondent à l'extension que vous avez spécifié à l'origine.
Je n'ai aucune idée de pourquoi ça fonctionne de cette façon, mais au moins, le comportement est cohérent, presque partout dans l'API Windows, où vous pouvez spécifier un fichier de modèle de recherche. Je ne peux que supposer qu'il a quelque chose à voir avec soutien de pour de longues extensions de fichier (c'est à dire, les noms de fichiers qui ne respectent pas les vieux DOS 8.3 règle).
Mais, vous pouvez obtenir à travers le comportement de deux façons:
Un masque qui spécifie une extension de fichier avec un, deux, ou plus de trois caractères sera de retour uniquement les fichiers avec les extensions de exactement la longueur spécifiée.
Ainsi, par exemple,
dir /s/b "*.xx"
va vous donner uniquement les fichiers avec l'extension.xx
, etdir /s/b "*.xxxzz"
va vous donner uniquement les fichiers avec l'extension.xxxzz
.Vous pouvez utiliser le point d'interrogation caractère générique, à la place de l'astérisque. Les astérisques signifient "remplacé par zéro ou plusieurs caractères", tandis que les points d'interrogation signifie exactement la substitution de la question de marquer avec un seul caractère.
?
pour accomplir ou s'étendre sur elle? Je ne comprends pas vraiment ce que tu veux dire par qui.dir /s/b "*.xx?"
pour obtenir uniquement les fichiers avec l'extension.xxx
.Je soupçonne que vous êtes dans un problème à cause de la façon dont Windows (versions plus anciennes, au moins) a généré un court 8.3 le nom du fichier à améliorer la compatibilité avec les anciens programmes. Vous pouvez probablement le confirmer en faisant dir /x *.xxx dans le répertoire où votre *.xxxzz fichiers existent.
Je ne sais pas si il y a un moyen de contourner cela, à partir du peu de ligne de commande Windows outils. Il doit probablement avoir été un interrupteur sur la commande dir de la force qu'à la seule considération de longs noms de fichiers, mais je n'en vois pas.
Vous pourriez être en mesure de résoudre votre problème par la désactivation des noms de fichiers courts sur ce volume, si vous êtes sûr que vous n'en avez pas besoin pour n'importe quel ancien logiciel vous êtes en cours d'exécution.
Je n'ai pas essayé moi-même, alors peut-être que les noms courts déjà généré continuera d'exister après avoir suivi ces instructions. Si oui, vous pourriez être en mesure de le réparer en copiant les arbres vous travaillez vers un nouvel emplacement.
Le fait est que si le système a été mis en place pour ne pas générer de 8.3 noms, chaque fichier ou un répertoire avec un nom de fichier long aura également un alias 8.3. Au moins avec certains des déformé constructions en usage dans les éditions ultérieures, il y en a beaucoup beaucoup d'alias.
Sur le plan scolaire, puisque c'est une question d'opinion (et donc en dehors de bailliage) on pourrait faire valoir que votre commande alternative processeur n'est pas de produire des résultats corrects puisque apparemment il ignore le nom de fichier court. Ce qui est "correct" est discutable, ce qui convient dans une seule application peut pas dans une autre. La méthode la plus simple et la plus logique est bien sûr de disposer d'une option - mais les chances de le acteur majeur dans le débat incorporant une telle installation, à ce stade, le montant à bien,De Buckley
Voici une routine qui peut convenir. Ce n'est pas à l'épreuve des balles qu'il va avoir des problèmes avec certains "poison " caractères" (ceux ayant une signification particulière pour la commande standard de processeur
cmd.exe
(Une application windows qui émule et améliore de nombreux équipements disponibles dans le DOS, et normalement, si, techniquement, à tort, appelé "DOS" par le politiquement incorrect pour des raisons de concision.))