在 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"
)

相關內容