Просто используйте Powershell, который предустановлен в Windows 7.
Powershell способен запускать команды cmd и понимает подстановочные знаки в любом месте пути.
Чтобы запустить Powershell, просто введите "powershell" в поле поиска в меню "Пуск" и нажмите Enter.
Если приложение ожидает строку со всеми именами файлов, это правильный сценарий:
$delimiter = " "
[string]$files = $nothing ; ls *.txt | % { $files += $_.fullname + $delimiter } ; application.exe $files
Замените $delimiter = " "
на $delimiter = ","
если ваше приложение ожидает разделенный запятыми список имен файлов.
Объяснение кода:
[string]$files = $nothing
- создает пустую переменную типа string
;
- это разделитель для нескольких команд, а не конвейер!
ls *.txt | % { $files += $_.fullname + $delimiter }
- получает список всех текстовых файлов и создает строку со всеми именами файлов, разделенными разделителем
application.exe $files
- вызывает приложение и передает ему список файлов
Вы даже можете рекурсивно искать шаблон файла, добавив -recurse
в ls *.txt
чтобы полный код выглядел так:
$delimiter = " "
[string]$files = $nothing ; ls *.txt -recurse | % { $files += $_.fullname + $delimiter } ; application.exe $files
Редактировать:
Чтобы избежать раздражений, ls
и dir
являются псевдонимами Get-ChildItem
а %
- псевдонимом ForEach-Object
. Я держу свой код с использованием псевдонимов, потому что он короче.
РЕДАКТИРОВАТЬ 2018/04/25:
Еще в 2012 году я был довольно новичком в PowerShell. Конечно, есть более простой способ, хотя он не так прост, как возможность unix/linux по расширению glob:
app.exe $(ls *.txt | % {$_.FullName})
Объяснение:
- $() сначала вычислит выражение внутри и заменит себя выводом этого выражения (так же, как обратные пометки в bash)
ls *.txt
получает объекты FileInfo всех файлов, соответствующих глобусу *.txt
- поскольку PowerShell является объектно-ориентированным, мы должны вывести полное имя каждого объекта FileInfo. Простое присвоение имени атрибуту / свойству в PowerShell выводит его по умолчанию.
% { $_.FileName }
делает это для нас. %
перебирает все элементы, возвращаемые ls
и выводит каждый объект FileName.