2010-11-25 8 views
1

En bref, je voudrais au port cette expression bash à un fichier batch windows:nom de fichier batch de Windows englobement

echo {foo,bar,baz}/*.{agent,event,plan}

Actuellement j'utilise echo foo/*.agent foo/*.event foo/*.plan bar/*.agent etc... mais comme le nombre de répertoires croître et de nouvelles extensions sont utilisées il devient très pénible de modifier cette ligne.

Répondre

0

Une ligne par (Je ne sais pas si cela est ok):

@echo off 
for %%A in (foo,bar,baz) do (
for %%B in (agent,event,plan) do echo %%A/*.%%B 
) 

Pour en une seule ligne, vous avez probablement besoin d'un hack:

@echo off 
SETLOCAL ENABLEEXTENSIONS 
for %%A in (foo,bar,baz) do (
for %%B in (agent,event,plan) do (SET /P "dummy=%%A/*.%%B ") < NUL 
) 
echo. 

Traiter comme une liste des fichiers et dossiers (n'imprimera les fichiers existants):

@echo off 
SETLOCAL ENABLEEXTENSIONS 
for %%A in (foo,bar,baz) do (
    for %%B in (agent,event,plan) do (
     for %%C in (%%A/*.%%B) do (SET /P "dummy=%%A/%%~nxC ") < NUL 
    ) 
) 
echo. 
+0

Désolé, besoin de tous les arguments sur une seule ligne. – ext

+0

@ext Malheureusement, il n'y a pas de support de tableau/liste réel dans Windows Echo. N'y a-t-il aucun moyen pour vous d'accepter les saisies par ligne? Tout le reste va être un hack ... – Anders

+0

@Anders Malheureusement, les arguments sont en train d'être alimentés à un analyseur (propriétaire) qui doit connaître tous les fichiers pour résoudre les dépendances. Mais je suppose que le piratage est correct, mieux que de changer manuellement la ligne à chaque fois, ce qui prend du temps et est sujet aux erreurs. – ext

Questions connexes