Verwenden Sie das Platzhalterzeichen „Sternchen“ (*) mit anderen installierten Befehlen in cmd.exe?

Verwenden Sie das Platzhalterzeichen „Sternchen“ (*) mit anderen installierten Befehlen in cmd.exe?

Dies ist das erste Mal, dass ich als Superuser eine Frage stelle. Ich hoffe, dass mir jemand bei meinem Problem helfen kann.

Lassen Sie mich zunächst erklären, was ich versuche. Ich verwende die Windows-Shell cmd.exe, um mein Bild (HDR-Format) mithilfe eines anderen in der Anwendung installierten Befehls zu kombinieren. Der Befehl ist ganz einfach, ich muss nur den Befehl schreiben und alle Daten danach auswählen. Der Befehl könnte so einfach aussehen wie dieser

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

aber da ist der Fehler, der sagt

images\patches\*.hdr: Invalid argument

Ich habe bereits nach der Lösung gesucht und dann einen Hinweis gefunden. Es scheint, dass das Platzhalterzeichen „*“ mit der Windows-Standardshell nicht funktioniert, obwohl das Platzhalterzeichen mit anderen Befehlen wie „type“ und „dir“ funktioniert, genau wie der folgende Befehl

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

Dann sagte jemand, dass ich Folgendes tun muss:

  1. Verwenden Sie die Cygwin-Shell, indem Sie einfach Git für Windows installieren (das Problem besteht weiterhin, obwohl ich den Bash-Tippstil verwende).
  2. Ich muss eine vollständige Liste der Dateien bereitstellen, die über einen Befehl ausgeschrieben sind, was ich bereits getan habe (es besteht jedoch ein weiteres Problem, da cmd.exe eine begrenzte Anzahl von Zeilen hat und ich Tausende von Dateien ausschreiben muss).

gibt es dafür eine Problemumgehung?

Entschuldigen Sie die schlechte Grammatik, ich bin nicht so fließend in Englisch

Antwort1

Handelt es sich hierbei um die fragliche ausführbare Datei:https://floyd.lbl.gov/radiance/man_html/pcomb.1.html

Wenn ja, ist die Dokumentation, gelinde gesagt, dürftig, aber wenn ich die angegebenen Beispiele richtig befolge (die immer nur 2 Eingabedateien zeigen und KEINE >?-Notation haben, außer „beim Erstellen eines Punkts“)

Wenn ja, glaube ich, dass Sie ungefähr Folgendes in der normalen manuellen Befehlszeile tun müssen:

Option 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"

Option 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"

Vorausgesetzt, dass das oben genannte im Test wie erwartet funktioniert, können Sie je nachdem, welche Option im Test funktioniert, Folgendes tun:

Option 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"

Option 2:

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

verwandte Informationen