La sortie de DIR en BAT tableau?
Est-il un moyen de lire dans la sortie d'un 'dir' de la commande dans un tableau dans un fichier BAT? Ou aurais-je besoin à la sortie vers un fichier, puis de lire le fichier et supprimer le fichier après?
Le but est d'obtenir une liste de dossiers dans un répertoire, ajouter un nombre à chaque, puis invite l'utilisateur pour une entrée numérique pour sélectionner un dossier.
Mise à JOUR : je l'ai!
SETLOCAL EnableDelayedExpansion
SET /A c=1
FOR /F "tokens=*" %%F in ('dir /on /b /a:d /p %svnLOCAL%') DO (
ECHO !c!. %%F
SET dir_!c!=%%F
SET /a c=c+1
)
REM test array
ECHO !dir_4!
ENDLOCAL
Je vous propose de voir cette réponse: stackoverflow.com/questions/10166386/...
OriginalL'auteur user1229895 | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Lot n'est pas officiellement en charge les tableaux, mais vous pouvez émuler des tableaux à l'aide de variables d'environnement.
Dans le code ci-dessus, le "tableau" des éléments sont nommés folder1, dossier2, dossier3...
Certaines personnes utilisent des noms comme dossier[1], dossier[2], dossier[3]... à la place. Il semble certainement plus de tableau, par exemple, mais c'est précisément pourquoi je ne fais pas ça. Les gens qui ne savent pas beaucoup sur le lot voir les variables comme ça et d'assumer lot prend en charge les tableaux.
La solution ci-dessus ne fonctionnera pas correctement si l'un des noms de dossiers contiennent les
!
caractère - le nom du dossier sera endommagé lors de l'expansion de l' %%F variable en raison de l'expansion retardée. Il y a un travail autour de impliquant le basculement de l'expansion retardée sur et en dehors, mais ce n'est pas la peine d'obtenir dans sauf si c'est nécessaire.Les guillemets ne sont pas nécessaires, mais ils font très explicite où l'ENSEMBLE affectation prend fin. Tant que le guillemet ouvrant est avant le nom de la variable, puis tout le texte après la citation finale est ignoré.
SET "var=value" junk
jeux de var de valeur et d'ordure, est ignoré. Il rend visuellement évident qu'il y a un espace à la fin de l'invite de commandes, et il protège par inadvertance d'autres espaces à la fois dans les déclarations.OriginalL'auteur dbenham
Ce n'est pas une réponse, mais un grand commentaire comme réponse à dbenham de réponse.
Mon point de vue sur cette question est précisément à l'opposé l'un de dbenhams. À mon avis, dans les réponses à la le Lot des sujets nous devons être très concis et clair, surtout avec les débutants, et de fournir le minimum d'info qui aide à résoudre le problème, mais de ne pas les accabler et apporter les réponses les confondre. Il y a deux façons de simuler tableaux dans le Lot: via le largement utilisé crochets, afin de joindre l'indice, ou pas, mais dans les deux cas, la concept est le même: sélectionnez un élément particulier d'une liste de variables avec le même nom par l'intermédiaire d'un index numérique.
Si les crochets ne sont pas utilisés, un débutant n'aurait pas comprendre le concept de base; au lieu de cela, ils pourraient penser que le fichier de commandes utilisé un "drôle de truc" pour résoudre le problème. Un programmeur expérimenté, en revanche, serait de dire: "Hey! C'est un tableau, mais écrit d'une manière différente". Il est impossible de confondre cette fonctionnalité pour tout autre chose, et aucune raison de le faire passer pour autre chose.
Si les crochets sont utilisés, un débutant aura trouvé des tonnes d'informations à propos de "tableau" concept et de nombreux exemples sur ce sujet dans de nombreux langages de programmation, et même les descriptions indépendant de tout langage de programmation qui, bien sûr, sont d'une utilisation immédiate dans des fichiers Batch. L'utilisation de crochets dans ce cas est beaucoup plus clair que ne pas le faire. Cependant, certaines personnes pensent que ces avantages ne vaut pas la "confusion" de supposer que le Lot "officiellement en charge les tableaux".
À mon avis, le point central de cette question n'est pas de discuter si Lot officiellement en charge les tableaux ou pas, mais le fait que tout les gens pouvez utiliser le tableau concept pour manipuler des données dans des fichiers Batch. Je ne vois pas de problèmes à tous avec la possibilité que certaines personnes peuvent penser Lot correctement en charge les tableaux, surtout les débutants, gestion de la matrice est différente dans les différents langages de programmation, juste faudrait une explication de Lot de détails. Toutefois, si un cadre plus formel de la discussion de ce sujet semble être important, je voudrais citer un autre exemple.
Savez-vous que le langage de programmation C n'est PAS "officiellement soutien" de l'Entrée-Sortie de l'opération? Quand Dennis Ritchie l'a inventé, il a précisément quitté ces opérations en dehors de la langue de conception afin de garder le compilateur petit et compact. Est-ce à dire que vous ne pouvez PAS lire/écrire des données dans des programmes en C? Bien sûr que non! Cela signifie simplement que ces opérations sont mises en oeuvre à l'extérieur le compilateur via la fonction des bibliothèques, donc si vous avez besoin de développer un compilateur C, vous ne devez pas être inquiet sur la façon de compiler les IMPRIMER, LIRE ou tout autres I/O état parce qu'ils n'existe tout simplement pas en langage C!
Intéressant, n'est-ce pas?
Par conséquent, si un débutant se demander: "Comment écrire un message en langage C?", pensez-vous que la bonne réponse devrait être: "Vous ne pouvez pas. Le langage C ne permet pas de soutenir officiellement I/O déclaration, mais vous pouvez imiter ces opérations par l'intermédiaire des fonctions de la bibliothèque"? Bien sûr que non! La plupart des gens tout simplement répondre à décrire printf, mais pratiquement aucun n'a mentionné que printf() ne fait PAS partie du langage C et je pense que c'est correct. En définitive, quel est le problème si quelqu'un peut penser que le langage C prend en charge les opérations e/S? Les gens pouvez utiliser opérations d'e/S dans des programmes C, peu importe la façon dont ils ont été mis en œuvre, à droite?
Bien, à mon humble avis, la même approche peut être utilisée dans le cas des tableaux dans le Lot.
Peut-être de plus près l'exemple est celui-ci: il y a beaucoup de questions à propos des "opérations arithmétiques dans le Lot" et la réponse est généralement: "l'utilisation
set /A
de commande". Je n'ai jamais vu une réponse qui indiquent que "des fichiers Batch ne prend pas en charge les variables numériques, juste les cordes, mais les opérations arithmétiques peuvent être imité dans plusieurs façons, comme leset /A
de commande". Pourquoi? Il semble que les puristes sont "plus puristes" quand ils se prononcer sur les tableaux dans le Lot, mais ils n'ont pas de soucis sur d'autres sujets, comme les nombres. Je ne comprends vraiment pas le but de la fréquente précisions à propos de "lot ne prend pas en charge les tableaux"!Utilisateur rojo d'avis sur ce point:
(voir son commentaire ci-dessus cette réponse).
Mon plaisir - bien que généralement, on dirais que langue maternelle ou langue natale..
J'ai été cité et cité à la publication d'un travail universitaire. Je me sens tellement honoré! C'est mon couronnement, l'apogée de mon existence.
OriginalL'auteur Aacini