Comment configurer une variable de tableau dans un script batch DOS? Je voudrais le charger avec une liste de noms de fichiers à traiter. Je voudrais vraiment garder cela aussi simple que possible. Merci.
33
Comment configurer une variable de tableau dans un script batch DOS? Je voudrais le charger avec une liste de noms de fichiers à traiter. Je voudrais vraiment garder cela aussi simple que possible. Merci.
Réponses:
Je l'ai compris:
J'ai fait quelque chose comme ça il y a plusieurs années, alors il a fallu en décider un peu. (Au fait, je déteste réinventer la roue.) Maintenant que c'est affiché ici, j'espère que d'autres le trouveront utile aussi.
la source
()
syntaxe.FILE_LIST[0]
.Oui, vous pouvez faire des tableaux en batch. Bien qu'ils ne soient pas exactement comme les tableaux en C ou VB, vous POUVEZ le faire:
la source
Dans le blog de Jakash3, Arrays in Batch explique comment émuler des tableaux dans l'invite de commande.
Un fichier de commandes nommé array.bat est inclus dans l'article, qui contient une bibliothèque de fonctions permettant de gérer les tableaux. Vous devrez sélectionner le texte de l'article et le coller dans le fichier chauve-souris.
Par exemple, le script de test suivant:
génère la sortie suivante:
la source
Cela remplit un tableau et l’imprime
Vous pouvez utiliser noms1 noms2 noms3, plutôt que noms [1] noms [2] noms [3] en écrivant des noms! I! au lieu de noms [! i!]. Il produit le tableau en générant des noms de variables. Il n'y a pas de structure de tableau en batch. Mais c'est aussi ordonné que n'importe quelle structure de tableau, et le remplissage ou l'impression ressemble exactement à la façon dont on peuplerait ou imprimerait un tableau dans un langage approprié (qui possède en fait la structure du tableau!).
le résultat-
Quelques explications
Le
setlocal enabledelayedexpansion enableextensions
avec le! Var! plutôt que% var% est nécessaire pour éviter tout comportement étrange, afin que les variables se comportent correctement dans un FOR ou un IF. C'est une bizarrerie avec les fichiers de commandes. Voirset /?
où cela est mentionné plus loin.C’est ce qui remplit le tableau et qui est assez simple pour quiconque connaît les tableaux. Vous pouvez également faire
names[0]=bob
names[1]=tom
names[2]=joseph
si l’une des beautés d’un tableau est la possibilité de remplir un tableau avec une boucle, ce que j’ai fait ici.Cela affiche le tableau. %% f si vous le voyez, vous verrez qu'il passera de 0 au dernier index du tableau, en étapes de 1. ainsi seront imprimés les noms [0] noms [1] noms [2]
la source
Pour ce que vous voulez faire, pourquoi ne pas utiliser une variable d'entrée pour chaque nom de fichier, que vous pouvez choisir avec les variables% 1% 2 etc., par exemple: mybat.bat fichier1.nam fichier2.nam etc.
Vous pouvez ensuite utiliser ces variables dans une boucle, mais vous devez uniquement utiliser% 1 comme paramètre principal, car vous pouvez utiliser SHIFT pour amener les autres variables dans la "position"% 1, avec un test de null (fin des variables) avec quelque chose comme si "X% 1" == "X"
par exemple:
la source
Si vous enregistrez la liste de fichiers dans le fichier filelist.txt, vous pouvez
FOR
lire et traiter chaque ligne du fichier, telle quepour imprimer chaque ligne d'un fichier (jusqu'au premier "|" de la ligne. Si vous ne spécifiez pas votre propre délimiteur, l'espace et la tabulation seront utilisés, ainsi, à moins que vos chemins ne comportent aucun espace, vous devez spécifier un caractère qui n'apparaîtra pas dans le fichier pour obtenir des lignes complètes).
la source
Dans un de vos commentaires à une réponse, vous dites:
Je crois que ce que vous recherchez est un Makefile et éventuellement cygwin pour vous donner une coque décente (bash, ou quelle que soit votre saveur).
la source
Remplace les chaînes et les lettres dans le texte.
Essayez la boucle en développant le texte dans un corps et en remplaçant var par var. Glissez-déposez le fichier texte pour que% 1 soit entré par l'utilisateur en appelant la commande set.
la source
Quelque chose comme ça dans un fichier batch? Sélectionnez un fichier dans un dossier. << est un commentaire, pas de code
la source
Vous ne pouvez pas vraiment créer de tableau dans l'invite de commande (et ce n'est pas vraiment un DOS si vous n'exécutez pas Windows 3.1). Cependant, vous pouvez effectuer un traitement basé sur les jeux avec la commande FOR.
Pour créer la liste des fichiers à traiter, vous pouvez créer manuellement un fichier texte à traiter ou utiliser la
dir /b <mask>
commande située dans la boucle FOR.Quelque chose que j'ai appris à la dure avec FOR - vous devez utiliser une variable SINGLE CHARACTER comme curseur!
la source
Consultez la documentation Microsoft sur le commande FOR batch . Vous pouvez utiliser FOR pour parcourir un ensemble de répertoires, des fichiers d’un répertoire ou des fichiers d’un répertoire et de tous ses sous-répertoires.
Par défaut, FOR gère un ensemble ou uniquement des fichiers:
Ou, pour récursif:
ou, pour les répertoires seulement:
la source
c’est un petit fichier de débogage que j’ai fait pendant un certain temps pour tester le tableau de mon jeu de remorquage en tic tac dans BATCH / CMD. il peut lire et écrire à partir d'un tableau sans aller trop gros et compliqué sur le code.
l'utiliser est simple:
Ecrire dans un tableau
Lecture d'un tableau
Code:
la source