Usando curinga asterisco (*) com outro comando instalado em cmd.exe?

Usando curinga asterisco (*) com outro comando instalado em cmd.exe?

Esta é a primeira vez que questiono algo sobre superusuário, espero que alguém possa me ajudar com meu problema.

Primeiro, deixe-me explicar o que estou tentando fazer. Estou usando o shell cmd.exe do Windows para me ajudar a combinar minha imagem (formato HDR) usando outro comando instalado no aplicativo. O comando é bastante fácil, basta escrever o comando e selecionar todos os dados depois dele. O comando pode parecer tão simples quanto este

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

mas lá se vai o erro que diz

images\patches\*.hdr: Invalid argument

Já procurei a solução e então tive uma pista. Parece que o curinga '*' não funciona com o shell padrão do Windows, embora o curinga funcione com outros comandos, como 'type' e 'dir', assim como o comando abaixo

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

Então alguém disse que eu tenho que:

  1. use o shell Cygwin simplesmente instalando o git para Windows (o problema ainda existe mesmo que eu esteja usando o estilo de digitação bash).
  2. Tenho que fornecer uma lista completa de arquivos explicados por meio de algum comando que já fiz (mas existe outro problema, pois cmd.exe tem um número limitado de linhas e tenho milhares de arquivos para soletrar)

existe alguma solução alternativa para isso?

Desculpe pela má gramática escrita, não sou muito fluente em inglês

Responder1

Este é o executável em questão:https://floyd.lbl.gov/radiance/man_html/pcomb.1.html

Nesse caso, a documentação é escassa, para dizer o mínimo, mas se eu seguir os exemplos dados corretamente (que mostram apenas 2 arquivos de entrada e NÃO possui a notação >? exceto "ao fazer um ponto")

Nesse caso, acredito que o que você está procurando fazer é algo assim na linha de comando normal manualmente:

Opção 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"

Opção 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"

Supondo que o que foi dito acima, quando testado, funcione conforme o esperado, você pode fazer o seguinte com base na opção que funciona no teste:

Opção 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"

Opção 2:

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

informação relacionada