Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've just recently reinstalled Windows and in setting up my environment I've noticed that all my associations for the various programming languages I edit in Notepad++ have gone (naturally).

I am thinking for the future, wouldn't it be grand to have some kind of batch file that could automatically associate a selection of file extensions with N++ at the click of a button, rather than having to wait until I encounter all these extensions then go through the rigmarole of navigating to the N++ exe etc.

I can't do this with the Default Programs utility that comes with Windows 7, because it only works with extensions that have been 'encountered'.

So is it possible to programatically associate file extensions with application on Windows?

share|improve this question
    
Does the solution have to be powershell as per your tag? –  Richard Mar 31 '12 at 13:48
    
Not at all, just trying to get the interest of the Windows command line junkies. :) –  deed02392 Mar 31 '12 at 13:53
    
Use Windows Easy Transfer to transfer your system settings, its built into Windows 7-Vista and can be downloaded for XP...microsoft.com/download/en/details.aspx?id=7349 –  Moab Mar 31 '12 at 14:24
    
That's not an option since the original Windows install isn't available anymore. –  deed02392 Mar 31 '12 at 14:40

2 Answers 2

up vote 13 down vote accepted

Use Ftype & Assoc to fix this (and it is scriptable).

Use Assoc to get the filetype

>Assoc .txt

gives you:

.txt = txtfile

Then

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

Once you know the file tye you can use Ftype to associate it with a action.

This would work for .php files (just plop them in a batch file)

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

And you can copy these lines to add other text-based files as you'd like.

share|improve this answer
6  
+1 for two command line tools that i didn't know existed. –  Ian Boyd Mar 31 '12 at 19:41
1  
This solution makes text files open up in notepad++ and not the previously assigned program (notepad). It won't make notepad++ open when you click on a new, unregistered, file extension (eg. pl, py or c) like the submitter asked. –  Richard Apr 1 '12 at 9:34
1  
@deed02392 you can add a new association with assoc 'Assoc .php=phpfile' should work –  uSlackr Apr 1 '12 at 19:53
1  
The bit "some kind of batch file that could automatically associate a selection of file extensions with N++" - although it could have been me misunderstanding it! –  Richard Apr 1 '12 at 21:51
1  
The intent of my answer was to show you how to use assoc & ftype, not to write the batch file for you. But I'll play along –  uSlackr Apr 3 '12 at 19:56

At the minimum, you need to create one registry key which gives notepad++ an ID and path and then one for each extension you wish to register to use it.

To create the ID and path (check the path points to the correct location):

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

and then keep repeating the next bit, one for each extension (in this example, .pl is for Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

Save this file with the extension .reg and you should now be able to re-associate all the extensions just by double-clicking on this file and confirming you want to import the entries into the registry.

share|improve this answer
    
Interesting, I've been looking and it seems what Windows 7 does when you set a program to load from is create an entry in HKCR\ext_auto_file\shell\open\command with a value of "C:\Program Files\Notepad++\notepad++.exe" "%1". Where were you basing yours from? –  deed02392 Mar 31 '12 at 18:26
    
It's basically the same, just with ext_auto_file renamed to something slightly more meaningful and multiple file extensions pointing to one single entry. –  Richard Mar 31 '12 at 22:14

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.