Verknüpfen Sie Dateierweiterungen programmgesteuert mit Anwendungen unter Windows


43

Ich habe gerade Windows neu installiert und beim Einrichten meiner Umgebung festgestellt, dass alle meine Verknüpfungen für die verschiedenen Programmiersprachen, die ich in Notepad ++ bearbeite, (natürlich) verschwunden sind.

Ich denke für die Zukunft, wäre es nicht großartig, eine Art Batch-Datei zu haben, die auf Knopfdruck automatisch eine Auswahl von Dateierweiterungen mit N ++ verknüpft, anstatt zu warten, bis ich dann auf all diese Erweiterungen stoße Gehe durch das Rigmarol des Navigierens zur N ++ - Exe usw.

Ich kann dies nicht mit dem Default ProgramsDienstprogramm tun , das mit Windows 7 geliefert wird, da es nur mit Erweiterungen funktioniert, die "aufgetreten" sind.

Ist es also möglich, Dateierweiterungen programmgesteuert mit Anwendungen unter Windows zu verknüpfen?


Muss die Lösung nach Ihrem Etikett aus Powershell bestehen?
Richard

1
Überhaupt nicht, nur um das Interesse der Windows-Kommandozeilen-Junkies zu wecken. :)
deed02392

Verwenden Sie Windows Easy Transfer, um Ihre Systemeinstellungen zu übertragen, die in Windows 7-Vista integriert sind und für XP heruntergeladen werden können ... microsoft.com/download/en/details.aspx?id=7349
Moab

Dies ist keine Option, da die ursprüngliche Windows-Installation nicht mehr verfügbar ist.
deed02392

Antworten:


63

Verwenden Sie Ftype & Assoc, um dies zu beheben (und es ist skriptfähig).

Verwenden Sie Assoc, um den Dateityp abzurufen

>Assoc .txt

gibt Ihnen:

.txt = txtfile

Dann

>Ftype txtfile=C:\Program Files (x86)\Notepad++\notepad++.exe %1

Sobald Sie den Dateityp kennen, können Sie ihn mit Ftype einer Aktion zuordnen.

Dies würde für .php-Dateien funktionieren (einfach in eine Batch-Datei kopieren)

Assoc .php=phpfile
Ftype phpfile="C:\Program Files (x86)\Notepad++\notepad++.exe" %1

Und Sie können diese Zeilen kopieren, um andere textbasierte Dateien hinzuzufügen, wie Sie möchten.


1
Interessant, wenn ich sage >assoc .php, es hat keine Dateizuordnung? Es scheint, dass das, was eingerichtet wird, wenn Sie ein Standardprogramm zum Öffnen eines Dateityps angeben, nicht auf diese Weise "registriert" ist. Warum könnte das so sein?
deed02392

18
+1 für zwei Kommandozeilen-Tools, von denen ich nicht wusste, dass sie existieren.
Ian Boyd

1
Diese Lösung öffnet Textdateien in Notepad ++ und nicht in dem zuvor zugewiesenen Programm (Notepad). Notepad ++ wird nicht geöffnet, wenn Sie auf eine neue, nicht registrierte Dateierweiterung (z. B. pl, py oder c) klicken, wie der Übermittler es verlangt hat.
Richard

1
@ deed02392 du kannst eine neue Assoziation mit assoc hinzufügen 'Assoc .php = phpfile' sollte funktionieren
uSlackr

2
Mit meiner Antwort wollte ich Ihnen zeigen, wie Sie assoc & ftype verwenden und nicht die Batch-Datei für Sie schreiben. Aber ich werde mitspielen
uSlackr

5

Hier ist ein Skript, das unter Windows 10 funktioniert hat

$exts=@("txt","log","csproj","sql","xml","flobble")
echo "## setting up file associations"
foreach ($ext in $exts){
    $extfile=$ext+"file"
    $dotext="." + $ext
    cmd /c assoc $dotext=$extfile
    cmd /c "ftype $extfile=""C:\Program Files (x86)\Notepad++\notepad++.exe"" %1"
    echo ""
}
  • Muss in einem Administrator-Powershell-Fenster (mit erhöhten Rechten) ausgeführt werden.
  • Der Explorer wurde sofort aktualisiert und zeigte neue Dateisymbole.

https://gist.github.com/timabell/bc90e0808ec1cda173ca09225a16e194

Dank den anderen Antworten für die Informationen, die ich brauchte, um diese Arbeit zu machen.


3

Sie müssen mindestens einen Registrierungsschlüssel erstellen, der Notepad ++ eine ID und einen Pfad gibt, und dann einen für jede Erweiterung, die Sie registrieren möchten, um sie zu verwenden.

So erstellen Sie die ID und den Pfad (überprüfen Sie, ob der Pfad auf den richtigen Speicherort verweist):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\notepad_pp]
@=""

[HKEY_CLASSES_ROOT\notepad_pp\shell]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open\command]
@="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\""

und wiederhole dann das nächste Bit, eines für jede Erweiterung (in diesem Beispiel .plfür Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

Speichern Sie diese Datei mit der Erweiterung .regund Sie sollten nun in der Lage sein, alle Erweiterungen neu zuzuordnen, indem Sie einfach auf diese Datei doppelklicken und bestätigen, dass Sie die Einträge in die Registrierung importieren möchten.


1
Interessant, ich habe gesucht und es scheint, dass Windows 7 beim Einstellen eines Programms, aus dem geladen werden soll, einen Eintrag in HKCR \ ext_auto_file \ shell \ open \ command mit dem Wert "C: \ Programme \ Notepad ++ \ notepad ++" erstellt .exe ""% 1 ". Wo hast du deine her?
deed02392

Im Grunde ist es dasselbe, nur mit ext_auto_file, das in etwas Bedeutungsvolleres umbenannt wurde, und mehreren Dateierweiterungen, die auf einen einzelnen Eintrag verweisen.
Richard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.