Просто используйте 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.