Это мой первый вопрос в статусе суперпользователя. Надеюсь, кто-нибудь сможет мне помочь с моей проблемой.
Сначала позвольте мне объяснить, что я пытаюсь сделать. Я использую оболочку 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
Потом кто-то сказал, что я должен:
- использовать оболочку Cygwin, просто установив git для Windows (проблема все еще существует, хотя я использую стиль ввода bash).
- Мне нужно предоставить полный список файлов, прописанных с помощью какой-то команды, что я уже сделал (но есть другая проблема, так как 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"
)