Lập trình liên kết các phần mở rộng tệp với ứng dụng trên Windows


44

Gần đây tôi đã cài đặt lại Windows và khi thiết lập môi trường của mình, tôi nhận thấy rằng tất cả các liên kết của tôi cho các ngôn ngữ lập trình khác nhau mà tôi chỉnh sửa trong Notepad ++ đã biến mất (một cách tự nhiên).

Tôi đang nghĩ về tương lai, liệu sẽ có một loại tệp bó nào đó có thể tự động liên kết một lựa chọn các phần mở rộng tệp với N ++ chỉ bằng một nút bấm, thay vì phải đợi cho đến khi tôi gặp tất cả các tiện ích mở rộng này trải qua sự nghiêm khắc của việc điều hướng đến exe N ++, v.v.

Tôi không thể làm điều này với Default Programstiện ích đi kèm với Windows 7, vì nó chỉ hoạt động với các tiện ích mở rộng đã 'gặp phải'.

Vì vậy, có thể liên kết lập trình phần mở rộng tệp với ứng dụng trên Windows không?


Giải pháp có phải là powershell theo thẻ của bạn không?
Richard

1
Hoàn toàn không, chỉ cố gắng để có được sự quan tâm của những người nghiện dòng lệnh Windows. :)
deed02392

Sử dụng Windows Easy Transfer để chuyển cài đặt hệ thống của bạn, được tích hợp vào Windows 7-Vista và có thể tải xuống cho XP ... microsoft.com/doad/en/details.aspx?id=7349
Moab

Đó không phải là một lựa chọn vì cài đặt Windows gốc không còn khả dụng nữa.
deed02392

Câu trả lời:


64

Sử dụng Ftype & PGS để sửa lỗi này (và nó có thể được script).

Sử dụng PGS để có được kiểu tệp

>Assoc .txt

mang đến cho bạn:

.txt = txtfile

Sau đó

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

Khi bạn biết loại tệp, bạn có thể sử dụng Ftype để liên kết nó với một hành động.

Điều này sẽ làm việc cho các tệp .php (chỉ cần đặt chúng trong một tệp bó)

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

Và bạn có thể sao chép các dòng này để thêm các tệp dựa trên văn bản khác như bạn muốn.


1
Thật thú vị, khi tôi làm >assoc .phpnó nói nó không có liên kết tập tin? Có vẻ như những gì được thiết lập khi bạn chỉ định một chương trình mặc định để mở một loại tệp không được 'đăng ký' theo cách này. Tại sao có thể như vậy?
deed02392

18
+1 cho hai công cụ dòng lệnh mà tôi không biết đã tồn tại.
Ian Boyd

1
Giải pháp này làm cho các tệp văn bản mở ra trong notepad ++ và không phải là chương trình được gán trước đó (notepad). Nó sẽ không làm cho notepad ++ mở khi bạn nhấp vào một phần mở rộng tệp mới, chưa đăng ký, (ví dụ: pl, py hoặc c) như người gửi yêu cầu.
Richard

1
@ deed02392 bạn có thể thêm một liên kết mới với PGS 'PGS .php = phpfile' sẽ hoạt động
uSlackr

2
Mục đích của câu trả lời của tôi là chỉ cho bạn cách sử dụng PGS & ftype, không phải viết tệp bó cho bạn. Nhưng tôi sẽ chơi cùng
uSlackr

5

Đây là tập lệnh phù hợp với tôi trên Windows 10

$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 ""
}
  • Cần phải được chạy trong cửa sổ quyền hạn của quản trị viên (nâng cao).
  • Explorer ngay lập tức được làm mới và hiển thị các biểu tượng tập tin mới.

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

Nhờ các câu trả lời khác cho thông tin tôi cần để thực hiện công việc này.


3

Tối thiểu, bạn cần tạo một khóa đăng ký cung cấp cho notepad ++ ID và đường dẫn và sau đó một khóa cho mỗi tiện ích mở rộng bạn muốn đăng ký để sử dụng nó.

Để tạo ID và đường dẫn (kiểm tra các điểm đường dẫn đến vị trí chính xác):

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

và sau đó tiếp tục lặp lại bit tiếp theo, một cho mỗi phần mở rộng (trong ví dụ này, .pllà cho Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

Lưu tệp này với tiện ích mở rộng .regvà bây giờ bạn có thể liên kết lại tất cả các tiện ích mở rộng chỉ bằng cách nhấp đúp vào tệp này và xác nhận bạn muốn nhập các mục vào sổ đăng ký.


1
Thật thú vị, tôi đã tìm kiếm và có vẻ như Windows 7 làm gì khi bạn đặt chương trình để tải từ đó là tạo một mục trong HKCR \ ext_auto_file \ shell \ open \ lệnh với giá trị là "C: \ Program Files \ Notepad ++ \ notepad ++ .exe ""% 1 ". Bạn đã dựa vào đâu?
deed02392

Về cơ bản là giống nhau, chỉ với ext_auto_file được đổi tên thành một cái gì đó có ý nghĩa hơn và nhiều phần mở rộng tệp chỉ vào một mục duy nhất.
Richard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.