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?

deed02392
quelle
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
Siehe auch stackoverflow.com/q/212906/10245
Tim Abell

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.

uSlackr
quelle
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.

Tim Abell
quelle
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.

Richard
quelle
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