проблема
Две проблемы здесь (как минимум):
Символ >
в командах оболочки (обе в оболочке POSIX
(то, что вы назвали «оболочкой Linux», ну да ладно, не будем отвлекаться)
а в интерпретаторе команд Windows cmd.exe
) означает
перенаправить вывод в файл, , поэтому команда
dir ... > git add
написал бы вывод команды dir
в файл с именем «git» в текущем каталоге.
Правильный способ перенаправить вывод одной команды
на вход другого (в обоих видах оболочек тоже)
символ "труба", |
. Но читайте вперед.
Команда git add
не принимает список
файлы для обновления в промежуточной области на своем стандартном входе,
и при этом у этого нет никакой опции командной строки, чтобы включить это поведение.
Следовательно, используя что-то вроде
dir ... | git add
все равно ничего не даст.
"Трюк" с | xargs git add
сработал для вас просто потому, что
xargs
ведет себя: он анализирует поступающие данные
его входной поток, разбивает на него строки и затем запускает указанный
команда (git add
в этом случае) с теми линиями, переданными ей
в качестве отдельных аргументов командной строки, то есть, если часть
из этого
git ls-files ... | ... | xargs git add
Конвейер до генерации xargs git add
5 строк, последний звонок на git args
, упорядоченный по xargs
похож на
git add line1 line2 line3 line4 line5
Решения
Сохраните в файл, затем выполните dir /f
Самый простой, я признаю, состоит в следующем:
Сохранить вывод dir
в файл.
Создайте цикл над ним - вызывая git add
для каждого элемента.
Для этого используйте команду for
с командной строкой /f
аргумент - ищите раздел под названием «Итерация диапазона значений
"в документах
(Вы также можете просто запустить for /?
и прочитать справку.
Это позволило бы назначить именованную переменную
по вашему выбору для каждого имени файла, прочитанного из файла по очереди
и затем назовите git add
на нем.
Использование git update-index
Более "жестким" решением является использование Git уровня сантехника
команда git update-index
(которая вызывается git add
в конце), так как эта команда позволяет читать спецификации
о том, как обновить промежуточную область из стандартного входного потока.
Предполагаемая проблема с этим подходом в том, что вам нужно
постобработать вывод из dir
, чтобы сделать его подходящим
за то, что git update-index
ожидает, и делает это в
Язык сценариев cmd.exe
будет бесполезным упражнением.