Comment puis-je exclure des noms de fichiers à partir d'un MS DOS dir liste?
Je suis entrain de créer un MS DOS script batch qui doit à chaque liste .fichier bat dans le répertoire en cours, mais ne pas montrer autoexec.bat
ou d'autres services publics ou des systèmes .les fichiers bat qui ne devrait pas être exécuté par l'utilisateur.
J'ai actuellement DIR "*.bat" /B /P
Cette liste tous .les fichiers bat de façon appropriée, mais il montre autoexec.chauve-souris. Comment aurais-je exclure de la liste? Aussi peu important, comment pourrais-je couper les extensions de fichier et de montrer plus de 7 caractères DOS limite les fichiers?
Contraintes: je ne suis pas en mesure d'utiliser une version DOS au-dessus de WinME. C'est la version que j'utilise.
Merci pour toute aide.
EDIT:
Il ya beaucoup d'informations sur internet à propos de le faire, mais c'est tout dans l'interpréteur de commandes windows, pas MS-DOS. S'il vous plaît comprendre que le DOS et l'Invite de Commande ne sont pas la même chose.
OriginalL'auteur Bit Fracture | 2013-03-30
Vous devez vous connecter pour publier un commentaire.
MODIFIER: Quelques explications ajouté
Traitement des fichiers de commandes est lent, donc vous devez utiliser des techniques qui permet à un fichier de commandes pour exécuter plus rapidement. Par exemple:
find
,findstr
,fc
, etc. spécialement si ils travaillent sur de petites quantités de données; utiliserif
de commande à la place.for %%a in (*.bat)...
au lieu defor /F %%a in ('dir /B *.bat')...
. La seconde méthode nécessite d'exécuter cmd.exe et de stocker les résultats dans un fichier avant defor
commande peut traiter ses lignes.if "!variable:%string%=!" neq "%variable%" echo The string is in the variable
.set list=one two three
,if "!list:%variable%=!" neq "%list%" echo The variable have one value from the list
. Si les valeurs de la liste peut contenir des espaces, ils doivent être séparés par un délimiteur.MODIFIER: Nouvelle version ajoute que répondre à de nouveaux commentaires
La façon la plus simple pour mettre en pause une page à la fois est d'utiliser
more
filtre de cette façon:Toutefois, le programme doit réorganiser la production, afin de montrer dans les colonnes. La nouvelle version ci-dessous d'atteindre ces deux choses, de sorte qu'il ne nécessite pas de
more
filtre; il vous suffit de définir le nombre de colonnes et de lignes par page.Antonio
+1, très belle & utile!
Je ne suis pas en mesure de tester votre code en ce moment, mais il semble prometteur! J'approuve votre réponse dès que je peux confirmer qu'il fonctionne. Merci!
Je dois aussi mentionner, c'est dans la version DOS de Windows Millennium. Il n'y a pas de CMD.exe. Il y a seulement des commandes internes (Command.com) ce qui je suppose est similaire à CMD.exe.
Bien! Ce code est presque là. J'ai besoin d'une seule chose, je veux afficher cette page par page, permettant à l'utilisateur d'appuyer sur une touche jusqu'à ce qu'il a montré. Il serait encore mieux si je pouvais obtenir dans des colonnes ainsi que des pages. Je veux assurez-vous qu'il est tout indiqué et en aussi peu de pages que possible.
OriginalL'auteur Aacini
devrait se cacher autoexec.chauve-souris et elle devrait donc pas apparaître dans la liste
Il fonctionne pour moi. Juste besoin d'un moyen facile de les exclure 1 fichier de traitement. Comme cette façon d'exclure des fichiers, parfait pour un petit nombre d'entre eux.
OriginalL'auteur Magoo
Sauf si vous avez sérieusement endommagé votre système d'exploitation, FIND.EXE est un système MS-DOS commande en.wikipedia.org/wiki/List_of_MS-DOS_commands et il devrait être dans le répertoire System32 de Windows, par exemple: C:\Windows\System32 si vous ne la trouvez pas, peut-être vous devez la réparation de votre installation de l'OS
MS-DOS n'a pas Find.exe construit en. C'est un programme externe et entièrement facultatif. Comme il apparaît, à l'aide de find.exe est devenu plus nécessaires parce que les autres le code pourrait faire exactement ce qu'elle pouvait. Peu importe, il n'est plus inclus avec le DOS ME disquettes de démarrage, même ceux avec tous les services publics. En plus moderne, dos installations, des charges de ces vieux programmes sont nulle part pour être trouvée.
Cette une est théoriquement le plus compact et le plus simple. Mais il peut être mieux que vous. Malheureusement pour l'OP cela ne fonctionne pas, parce que de DOS, mais
dir *.bat|find /v "autoexec"
. vous n'avez pas besoin de la boucle supplémentaire - ne sais pas pourquoi vous voulez.OriginalL'auteur Hernán
À l'aide de
for
pour traiter chaque nom de fichier individuellement:Une autre méthode sans variables:
Pour les deux, vous pouvez ajouter de nouveaux noms de fichiers à exclure de la liste.
OriginalL'auteur user2033427