Il suffit d'utiliser Powershell, qui est préinstallé sur Windows 7. Powershell est capable d'exécuter des commandes cmd et comprend les caractères génériques à n'importe quel endroit d'un chemin d'accès.
Pour lancer Powershell, il suffit de taper "powershell" dans le champ de recherche du menu Démarrer et d'appuyer sur la touche Entrée.
Si l'application attend une chaîne contenant tous les noms de fichiers, il s'agit du bon script :
$delimiter = " "
[string]$files = $nothing ; ls *.txt | % { $files += $_.fullname + $delimiter } ; application.exe $files
Changer $delimiter = " "
a $delimiter = ","
si votre application attend une liste de noms de fichiers séparés par des virgules.
Explication du code :
[string]$files = $nothing
- crée une variable vide de type string
;
- est un séparateur de commandes multiples, pas un pipeline !
ls *.txt | % { $files += $_.fullname + $delimiter }
- obtient une liste de tous les fichiers texte et crée une chaîne avec tous les noms de fichiers séparés par le délimiteur
application.exe $files
- appelle l'application et lui transmet la liste des fichiers
Vous pouvez même rechercher un modèle de fichier de manière récursive en ajoutant -recurse
a ls *.txt
de sorte que le code complet ressemblerait à ceci :
$delimiter = " "
[string]$files = $nothing ; ls *.txt -recurse | % { $files += $_.fullname + $delimiter } ; application.exe $files
Editer :
Pour éviter les irritations, ls
y dir
sont des alias de Get-ChildItem
y %
est un alias de ForEach-Object
. Je garde mon code avec des alias utilisés parce qu'il est plus court.
ÉDITER 2018/04/25 :
En 2012, j'étais assez novice en matière de PowerShell. Bien sûr, il y a un moyen plus facile, bien qu'il ne soit pas aussi simple que la capacité d'expansion de globes d'Unix/linux :
app.exe $(ls *.txt | % {$_.FullName})
Explication :
- $() évaluera d'abord l'expression à l'intérieur et se remplacera lui-même par la sortie de cette expression (comme le font les backticks en bash)
ls *.txt
récupère les objets FileInfo de tous les fichiers qui correspondent au glob *.txt
- parce que PowerShell est orienté objet, nous devons sortir le fichier nom complet de chaque objet FileInfo. Le simple fait de nommer un attribut/une propriété dans PowerShell l'affiche par défaut.
% { $_.FileName }
le fait pour nous. %
boucle sur tous les éléments renvoyés par ls
et produit le nom de fichier de chaque objet.