Чи можу я двічі клацнути файл, щоб відкрити його іншою програмою, ніж те, що пов’язано з ним?


1

Чи є спосіб створити окремі асоціації типу файлів для того, коли файл запускається з командного рядка та коли він відкривається (подвійним клацанням миші) від провідника (GUI)?

Мені хотілося запустити сценарії python, не потребуючи приставки python. Тому я запустив ці команди:

ASSOC .py=Python
FTYPE Python=D:\Software\Installed\Anaconda\python.exe %1 %*

Я також хочу мати змогу відкрити скрипт за допомогою Notepad ++, коли я двічі клацнув файл у Windows Explorer.

Я знаю, що можу клацнути правою кнопкою миші сценарій і вибрати "Редагувати за допомогою блокнота ++", але це єдиний варіант, якщо я виріблю пов'язувати .pyфайли python.exe?

Редагувати

На основі пропозиції @ Fabby я створив edit_or_run.pyсценарій:

import os
import psutil
import subprocess
import sys

running_from = psutil.Process(os.getpid()).parent().name()

if running_from == 'cmd.exe':
    subprocess.Popen(['python.exe'] + sys.argv[1:])
elif running_from == 'explorer.exe':
    subprocess.Popen(['C:/Program Files (x86)/Notepad++/notepad++.exe', sys.argv[1]])

і змінив асоціацію типу .pyфайлів, щоб файли відкривались із цим сценарієм:

FTYPE Python=D:\Software\Installed\Anaconda\python.exe D:\Software\Installed\edit_or_run.py "%1" %*

Примітка. Це працює. Але коли він відкривається в провіднику, він проходить секунду, перш ніж його відкрити за допомогою Notepad ++.

Відповіді:


0

Ви хочете мати свій торт і з'їсти його теж? Це можливо, але вам потрібно мати 2 торти: один з'їсти і один зберегти ... :-)

Тож у вашому випадку вам потрібно пов’язати його з третьою програмою:

ASSOC .py=Python
FTYPE Python=D:\Software\Installed\Anaconda\python.exe D:\Software\Installed\MaheshChoose.py %1 %*

Де MaheshChooseви пишете програму Python, яка пропонує вам вибір між:

Edit
Run


Ваша пропозиція працює. Єдина проблема - це повільніше. Я опублікував написаний сценарій. Коли ви давали пропозицію, чи щось у вас було краще?

1
Я пишу С, так ось як я це зробив би на C, який складається, а не інтерпретується ...
Fabby
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.