Использование подстановочного знака звездочка (*) с другой установленной командой в cmd.exe?

Использование подстановочного знака звездочка (*) с другой установленной командой в cmd.exe?

Это мой первый вопрос в статусе суперпользователя. Надеюсь, кто-нибудь сможет мне помочь с моей проблемой.

Сначала позвольте мне объяснить, что я пытаюсь сделать. Я использую оболочку windows cmd.exe, чтобы помочь мне объединить мою картинку (формат hdr) с помощью другой установленной команды приложения. Команда довольно проста, мне просто нужно написать команду и выбрать все данные после нее. Команда может выглядеть так же просто, как эта

mydir > pcomb images\patches\*.hdr > images\combinedimages.hdr

но вот ошибка, которая говорит

images\patches\*.hdr: Invalid argument

Я уже искал решение, и вот у меня появилась подсказка. Похоже, что подстановочный знак '*' не работает со стандартной оболочкой Windows, хотя подстановочный знак работает с другими командами, такими как 'type' и 'dir', как и команда ниже

mydir > dir images\patches\*.hdr
22/07/2019  13.47           938.824 p000.hdr
22/07/2019  13.47           938.824 p001.hdr
22/07/2019  13.47           938.824 p002.hdr
22/07/2019  13.47           938.824 p003.hdr
22/07/2019  13.47           938.824 p004.hdr
22/07/2019  13.47           938.824 p005.hdr

Потом кто-то сказал, что я должен:

  1. использовать оболочку Cygwin, просто установив git для Windows (проблема все еще существует, хотя я использую стиль ввода bash).
  2. Мне нужно предоставить полный список файлов, прописанных с помощью какой-то команды, что я уже сделал (но есть другая проблема, так как cmd.exe имеет ограниченное количество строк, а мне нужно прописать тысячи файлов)

есть ли какой-нибудь обходной путь?

Извините за плохую грамматику, я не очень хорошо владею английским.

решение1

Это тот исполняемый файл, о котором идет речь:https://floyd.lbl.gov/radiance/man_html/pcomb.1.html

Если так, то документация, мягко говоря, скудная, но если я правильно следую приведенным примерам (которые всегда показывают только 2 входных файла и НЕ имеют обозначения >?, за исключением «при создании точки»)

Если так, то я полагаю, что вы пытаетесь сделать что-то вроде этого в обычной командной строке вручную:

Опция 1:

pcomb "C:\images\patches\938.824 p000.hdr" "C:\images\patches\938.824 p001.hdr" "C:\images\patches\938.824 p002.hdr" >"C:\images\combinedimages.hdr"

Вариант 2:

pcomb "C:\images\patches\938.824 p000.hdr" > "C:\images\combinedimages.hdr"
pcomb "C:\images\patches\938.824 p001.hdr" > "C:\images\combinedimages.hdr"
pcomb "C:\images\patches\938.824 p002.hdr" > "C:\images\combinedimages.hdr"

Предполагая, что при тестировании вышеизложенное работает так, как и ожидалось, вы можете сделать следующее в зависимости от того, какой вариант работает при тестировании:

Опция 1:

SET "_HDRFiles=" &REM Clearing the variable in the CLI in case you run this multiple times.

FOR %A IN ("C:\images\patches\*.hdr" ) DO (
  CALL SET "_HDRFiles=%_HDRFiles% "%A""
)
pcomb %_HDRFiles% >"C:\images\combinedimages.hdr"

Вариант 2:

FOR %A IN ("C:\images\patches\*.hdr" ) DO (
  pcomb "%A" > "C:\images\combinedimages.hdr"
)

Связанный контент