Wie maskiere ich Leerzeichen für den Befehl ftype in Windows?

Wie maskiere ich Leerzeichen für den Befehl ftype in Windows?

Ich habe einen neuen Dateityp mit Leerzeichen erstellt und den Öffnungsbefehl dafür angegeben:

assoc .php="PHP Script"
ftype "PHP Script"="c:\program files (x86)\php\php.exe" -f "%1" -- %~2

Soweit so gut, aber jetzt kann ich nicht überprüfen, welcher Befehl zum Öffnen von Dateien dieses Typs verwendet wird:

ftype "PHP Script"
File type 'PHP' not found or no open command associated with it.

Ich habe versucht, mitdas Caret-Symbol, ohne Wirkung. Wie bringe ich ftype dazu, Leerzeichen zu akzeptieren, um den aktuell verwendeten Befehl abzurufen?

Antwort1

Sie machen es falsch. Zunächst einige Hintergrundinformationen zu MSDN:

Wenn Sie verwenden assoc .ext=fileType,Dateitypist eigentlich dieProgramm-ID. Wie der letzte Link oben besagt:

Das korrekte Format eines ProgID-Schlüsselnamens ist [Hersteller oder Anwendung].[Komponente].[Version].durch Punkte getrennt und mitkein Platz, wie in Word.Document.6. Der Versionsteil ist optional, wird aber dringend empfohlen.

Die Dateitypbeschreibung können Sie hinzufügen alsFreundlicherTypNameWert in der Registrierung.

Zum Beispiel:

[HKEY_CLASSES_ROOT\.txt]
@="txtfile"
"PerceivedType"="text"
"Content Type"="text/plain"

Hier.txtist offensichtlich die Erweiterung und die(Standard)Der Wert wird auf die ProgID gesetzt, d. h.txt-Datei.

[HKEY_CLASSES_ROOT\txtfile]
@="Text Document"
"FriendlyTypeName"="Text Document"

Hier haben wir für die ProgID die(Standard)Wert für die Dateitypbeschreibung gesetzt, und das gleiche gilt fürFreundlicherTypName. Im Allgemeinen wird letzteres jedoch verwendet, um lokalisierte String-Ressourcen anzuzeigen und muss als indirekter String formatiert sein (ein vollständig qualifizierter Dateiname und Ressourcenwert, dem das @-Symbol vorangestellt ist, beispielsweise @%SystemRoot%\system32\notepad.exe,-469fürtxt-Datei).


Ich weiß nicht, warum, assocund ftypebeide erlauben die Verwendung von Leerzeichen in den Zeichenfolgen fileType/ProgID, da dies gegen die eigenen Richtlinien von MS verstößt. ProgIDs mit Leerzeichen funktionieren sogar ordnungsgemäß, wenn sie manuell in der Registrierung erstellt werden (ich habe es gerade getestet), aber ich habe bemerkenswerterweise keine einzige ProgID gefunden, die von einem Programm erstellt wurde, das Leerzeichen verwendet. Noch seltsamer ist, wie ftypeLeerzeichen abgelehnt werden, währendbekommenDaten (Anführungszeichen helfen nicht), während es keine Probleme hat, sie zu akzeptieren, währendEinstellungdie Befehlszeichenfolge an erster Stelle (Anführungszeichen sind beim Festlegen nicht einmal erforderlich).

Ich vermute, jemand hat vergessen, die Entwickler über diese Diskrepanz zu informieren ftype, denn ich konnte keine Möglichkeit finden, den Befehl dazu zu bringen, die Befehlszeichenfolge abzurufen, die er zuvor selbst für eine ProgID mit Leerzeichen festgelegt hatte. Mein Rat? Halten Sie sich an die Richtlinien, verwenden Sie keine Leerzeichen in ProgIDs und ersparen Sie sich den Ärger, die Eigenheiten von Windows herauszufinden.

verwandte Informationen