сопоставить все файлы в текущем каталоге - PullRequest
0 голосов
/ 23 июня 2010

Как мне добиться этого в Windows, используя командную строку или PowerShell?

myprog *

РЕДАКТИРОВАТЬ: я хочу вызвать myprog с каждым файлом в текущем каталоге в качестве аргумента.

Ответы [ 4 ]

3 голосов
/ 23 июня 2010

Если ваша цель - вызывать «myprog.exe» для каждого файла в каталоге, предполагая, что «myprog.exe» не обрабатывает символы подстановки itselef, это должно быть примерно так в powershell:

dir | % {prog $_.FullName} 

Редактировать: принимая во внимание ваш комментарий, попробуйте это:

prog (get-childItem -name)

Надеюсь, это поможет ...

2 голосов
/ 23 июня 2010

Я обернул решение Седрика Рупа в функцию ea (ExpandAll?).Не такой чистый, как подход Unix.

function ea ($p="*") { dir $p | foreach { '"{0}" ' -f $_.Name } }

.\Myprog.exe (ea)
.\Myprog.exe (ea *)
.\Myprog.exe (ea *.txt)
1 голос
/ 23 июня 2010

В файле .CMD или .BAT:

SETLOCAL EnableDelayedExpansion
FOR %%f in (*) DO SET params=!params! "%%f"
CALL myprog %params%

Синтаксис SETLOCAL EnableDelayedExpansion и !variable! позволяет накапливать результаты.(См. эту страницу для объяснения и примеров.)

Редактировать: Добавлены кавычки вокруг %% f и изменен список на «*» ... см. Комментарии ниже.

0 голосов
/ 23 июня 2010

Вы имеете в виду следующую конструкцию в командной оболочке (cmd.exe):

for %f IN (*.*) DO echo %f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...