在 cmd.exe 中将星号 (*) 通配符与其他已安装的命令一起使用?

在 cmd.exe 中将星号 (*) 通配符与其他已安装的命令一起使用?

这是我第一次对超级用户提出疑问,我希望有人能帮助我解决我的问题。

首先,让我解释一下我要做什么。我正在使用 Windows cmd.exe shell 帮助我使用另一个应用程序安装的命令合并我的图片(hdr 格式)。该命令非常简单,我只需编写命令并选择其后的所有数据即可。该命令可能看起来像这样简单

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

但出现了错误

images\patches\*.hdr: Invalid argument

我已经搜索了解决方案,然后得到了一些线索。看来“*”通配符不适用于 Windows 标准 shell,即使通配符适用于其他命令,例如“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. 通过简单地为 Windows 安装 git 来使用 Cygwin shell(即使我使用 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"
)

相关内容