একই এক্সটেনশন সহ ফাইলগুলি আলাদাভাবে আচরণ করতে উইন্ডোজ পান


10

একাধিক প্রোগ্রাম একই ফাইল এক্সটেনশন ব্যবহার করে তবে ফর্ম্যাটগুলি সম্পূর্ণ আলাদা এবং বেমানান। উদাহরণস্বরূপ, .schআমার কম্পিউটারে এমন ফাইল রয়েছে যা কমপক্ষে 5 টি আলাদা ফর্ম্যাটে (টিআইএনএ, পিএসপাইস, প্যাডস, প্রোটেল এবং agগল) থাকে। উইন্ডোজগুলি তাদের সাথে অন্যরকম আচরণ করার কোনও উপায় আছে, যাতে এই জাতীয় কোনও ফাইলের উপর ডাবল-ক্লিক করলে এটি প্রোগ্রামটিতে খোলার বোঝায়?

লিনাক্স ফাইলগুলিতে আলাদা করতে ম্যাজিক নম্বর ব্যবহার করে এবং কেবল ফ্যালব্যাক পরিকল্পনা হিসাবে ফাইল এক্সটেনশান ব্যবহার করে। ( উদাহরণস্বরূপ, সমস্ত পিএনজি ফাইলগুলি বাইটগুলি দিয়ে শুরু করে 89 50 4E 47 0D 0A 1A 0A , উদাহরণস্বরূপ, আপনি তাদের নামটি নির্বিশেষে)) উইন্ডোজ যদি এটি সমর্থন করতে পারে তবে এটি দুর্দান্ত লাগবে তবে সম্ভবত এটি প্রয়োগ করা খুব কঠিন। দ্বিতীয় স্তরের এক্সটেনশনের মতো সাধারণ কিছু হতে পারে, লাইক filename.program1.schএবং filename.program2.sch? হতে পারে এমন কোনও ফিল্টার যা ফ্লাইতে ফাইলগুলির নাম পরিবর্তন করে?

আরও ভাল ধারণা: একটি দ্বি-স্তরের এক্সটেনশন যাচাই করে বা ফাইলের মধ্যে চলে যায় এবং ম্যাজিক নম্বরটি স্ক্যান করে তারপরে উপযুক্ত প্রোগ্রাম চালু করে এমন প্রি-প্রসেসরের (.bat ফাইল বা ডেডিকেটেড অ্যাপ্লিকেশন) সাথে অস্পষ্ট প্রসারকে সংযুক্ত করে?


1
ট্রাইড আপনার পক্ষে আগ্রহী হতে পারে - এটিতে 4400 বাইনারি স্বাক্ষরের একটি ডাটাবেস রয়েছে।
josh3736

আমার মনে আছে এটি আরআইএসসি ওএসে ঘটত তবে কখনও কখনও হতাশার কারণ হয়ে দাঁড়াত যখন আপনি একাধিক অ্যাপ্লিকেশন পেয়েছিলেন যা একই ফাইল টাইপ প্রক্রিয়া করতে পারে এবং এটি ভুল প্রোগ্রাম দিয়ে প্রোগ্রামটি খুলবে!
ম্যাট উইলকো

@ ম্যাট: দুর্দান্ত, ধন্যবাদ! ফাইল
এন্ডোলিথ

উত্তর:


9

উইন্ডোজ ফাইলের কোনও তথ্যের উপর ভিত্তি করে ফাইলগুলি চালু করে না - এর জন্য একটি ডেটাবেস তৈরি করে অবিশ্বাস্য পরিমাণ কাজ এবং প্রোগ্রামিং লাগবে। ফাইল শনাক্ত করার একমাত্র সত্য উপায় ফাইলটিতে বাইনারি স্বাক্ষরগুলি রয়েছে, যদি ফাইলটিতে এটি থাকে এবং এটি প্রয়োগ করা সফ্টওয়্যার লেখকের উপর নির্ভর করে।

উইন্ডোজে, আপনার নির্দিষ্ট ফাইল এক্সটেনশনের জন্য নির্দিষ্ট করা প্রোগ্রামগুলিতে ফাইলগুলি পাস করা হয়। উইন্ডোজ কোনও ফাইলের এক্সটেনশনটিকে স্ট্রিং হিসাবে নির্ধারণ করে যা কোনও সময়ের শেষ ঘটনা অনুসরণ করে, সুতরাং আপনার পোস্ট করা ফাইলের নাম দিয়ে এটি সম্ভব নয়।

আপনাকে হয় ফাইলগুলির পুনরায় নামকরণ করতে হবে (এবং তাদের জন্য অনন্য ফাইল এক্সটেনশন দিন), বা আপনার জন্য উপযুক্ত অ্যাপ্লিকেশন চালু করতে একটি ব্যাচ ফাইল লিখতে হবে। আরও বিশদের জন্য এই টেকনেট নিবন্ধটি দেখুন


1
আমি একটি অনন্য ফাইল এক্সটেনশান তৈরি করে এই কাজটি করার চেষ্টা করছিলাম, তবে তিনি যদি করেন তবেও আসল সমস্যাটি হ'ল বেশিরভাগ প্রোগ্রামগুলি কেবল সামগ্রীতে থাকা সত্ত্বেও তাদের নিজস্ব এক্সটেনশনগুলি স্বীকৃতি দেবে এবং যেভাবে সেগুলি খুলবে না।
কেকটরউ

2
যদিও কাউকে এটি করতে দেখতে আমি পছন্দ করব। আমি মনে করি আপনি যেভাবে এটি ঘুরিয়ে নেবেন সেটি হ'ল সমস্ত এক্সটেনশনের একটি একক প্রোগ্রাম খোলা থাকে এবং সেই প্রোগ্রামটির নিজস্ব ডাটাবেস রাখা থাকে (ফাইলগুলি ট্র্যাক রাখতে এনটিএফএসের বিকল্প স্ট্রিম ব্যবহার করে) এবং প্রতিটি স্বতন্ত্র প্রোগ্রাম চালু করে যেটির জন্য ব্যবহারকারী নির্ধারণ করে দেয় প্রতিটি ফাইল এটা তোলে হবে না যে অনেক কাজ, কিন্তু আমি এই পদ্ধতির সঙ্গে সমস্যা অনেক দেখতে পারেন, তাই সম্ভবত কেন কেউ এটি সম্পন্ন হয়েছে যে।
সাশা চেদিগোভ

2
এটি খুব কঠিন হবে না - এমন সরঞ্জাম রয়েছে যা এটি করে (ট্রিড, বা ফাইল) এবং বেশিরভাগ পিক্সিক ভিত্তিক ওসগুলি ফাইলের শিরোনামগুলিকে দেখে এবং এক্সটেনশনগুলিতে না। এটি যতটুকু পরিশ্রম করবে তার তুলনায় এটি ডিজাইনের পছন্দগুলির বিষয় কম। স্বাভাবিকভাবেই এটি তৃতীয় পক্ষের পক্ষে অনেক কঠিন হবে, তবে এমএস যদি মনে করে এটির প্রয়োজন হয় তবে এটি আধা-তুচ্ছ হতে পারে
জার্নম্যান গেক

3
"ফাইলগুলি ট্র্যাক রাখতে এনটিএফএসের বিকল্প স্ট্রিম ব্যবহার করা হচ্ছে।" উইন্ডোজ কেন লিনাক্স / পসিক্স মডেলটি প্রয়োগ করে না তা আমার কাছে স্পষ্ট। কেবল এটির জন্য একটি ফাইল পড়ার প্রয়োজন requires যদি এমনটি হয়, প্রতিবার আপনি কোনও ফাইলকে ডানদিক ক্লিক করেছেন, এটি একটি ব্যয়বহুল ফাইলটি পড়া থেকে সরিয়ে দিতে হবে। আরও খারাপ, কল্পনা করুন যে এটি কোনও নেটওয়ার্ক ফাইল এবং সংযোগটিতে একটি লক্ষণীয় পিছনে ছিল। লোকেরা কেবল উইনডোজকে দোষ দেবে। রেমন্ড চেন এই কৌশলটির উপর চাপ দেবেন, কারণ এটি কোনও তৃতীয় স্তরের সংগ্রহস্থলে থাকলে কোনও ফাইল পুনরায় কল্পনা করতে পারে।
surfasb

1
তবে উইন্ডোজ আপনাকে সেই মডেলটি ভাঙতে দেয়। । ।
surfasb

8

আমি নিজেই এটি সমাধান করেছি:

আমি একটি পাইথন স্ক্রিপ্ট তৈরি করেছি যা কোনও ফাইলের প্রথম কয়েকটি বাইট পড়ে এবং একটি অভিধানের সাথে তুলনা করে, তারপরে যাদু সংখ্যার ভিত্তিতে উপযুক্ত প্রোগ্রাম চালু করে laun

import sys
import subprocess

magic_numbers = {
'OB': r'C:\Program Files (x86)\DesignSoft\Tina 9 - TI\TINA.EXE', # TINA
'*v': r'C:\Program Files (x86)\Orcad\Capture\Capture.exe', #PSpice
'DP': r'C:\Program Files (x86)\Design Explorer 99 SE\Client99SE.exe', #Protel
'\x00\xFE': r'C:\MentorGraphics\9.0PADS\SDD_HOME\Programs\powerlogic.exe', #PADS Logic
'\x10\x80': r'C:\Program Files (x86)\EAGLE-5.11.0\bin\eagle.exe', # Eagle
}

filename = sys.argv[1]
f = open(filename, 'rb')
# Read just enough bytes to match the keys
magic_n = f.read(max(map(len, magic_numbers)))

subprocess.call([magic_numbers[magic_n], filename])

সর্বশেষ সংস্করণটি এখানে থাকবে: উপযুক্ত প্রোগ্রামে অস্পষ্ট ফাইলগুলি চালু করুন

আমি এই স্ক্রিপ্টটির সাথে ফাইলের এক্সটেনশানটি সংযুক্ত করার চেষ্টা করেছি, তবে উইন্ডোজ 7 আমাকে দেয়নি। এটি কেবল পরিবর্তে পাইথনের সাথে যুক্ত করে, তাই আমি রেজিস্ট্রিতে গিয়ে স্ক্রিপ্টটির নামটি ম্যানুয়ালি যুক্ত করেছি।

পাইথন স্ক্রিপ্টের সাথে ফাইল এক্সটেনশন কীভাবে সংযুক্ত করা যায়

উন্নতির জন্য ঘর, তবে এটি কাজ করে। আমি একই .sch এক্সটেনশান সহ বিভিন্ন ফাইলগুলিতে ডাবল-ক্লিক করতে পারি এবং সেগুলি বিভিন্ন অ্যাপ্লিকেশনে খোলে।

আপডেট: আমি এটিকে বাহ্যিক YAML কনফিগারেশন ফাইলের সাথে cx_freeze ব্যবহার করে একটি .exe এ রূপান্তর করেছি এবং এর সাথে যুক্ত হওয়া সহজ। আরও দেখুন এই libmagic প্রস্তাব । নিশ্চিত না যে আমার এটি একটি সম্পূর্ণ "উইন্ডোজের জন্য লিবম্যাগিক লঞ্চার" হিসাবে তৈরি করা উচিত বা যদি একটি। এক্সে এবং একটি সহজ ওয়াইএএমএল ফাইলের সাথে কেবল একটি ফাইল এক্সটেনশন পরিচালনা করা ভাল।


2
এটি একটি উদাহরণ হিসাবে লিখতে আসলে তুচ্ছ হবে। । ।
surfasb

আপনি কীভাবে এক্সেস লিখতে জানেন না তা নয় :)
এন্ডোলিথ

1
ইয়াৰ ওপৰত তেওঁ নক নাছিল। এটি আমার জন্য কিছু ছিল :)
surpasb

@ সুরসব: তাহলে আপনি কি আমাকে এখনও .exe লিখেছেন? এটা তুচ্ছ, তাই না? :)
এন্ডোলিথ

আমি পুরোপুরি ভুলে গেছি! আমি গত এক সপ্তাহ ধরে সিলভারলাইটে থ্রিডি মেসের সাথে ঝামেলা করছি। পরে আজ রাতেই, আমি এই RAID অ্যারে বেবিসিত করার পরে। । ।
সার্ফাসব

3

শুরু করতে, আপনি নতুন এক্সটেনশানগুলির জন্য ফাইলগুলির যে কোনও একটির নাম পরিবর্তন করতে পারেন এবং সেই ধরণের ফাইলগুলি খুলতে একটি ডিফল্ট প্রোগ্রাম সেট করতে "উইথ উইথ" ডায়লগটি ব্যবহার করতে পারেন।

যদিও এটি নামকরণের সমস্যাটির সাথে ডিল করে না। তবে আপনি কোনও নির্দিষ্ট ফোল্ডার তৈরি করে জিনিসগুলিকে সরল করেন যেখানে আপনি প্রোগ্রামগুলির মধ্যে একটি থেকে সমস্ত ফাইল রেখে দেন। তারপরে আপনি আপনার নতুন ফাইল এক্সটেনশনে সেই ফোল্ডারে থাকা ফাইলগুলির স্বয়ংক্রিয় নাম পরিবর্তন করতে একটি স্ক্রিপ্ট লিখতে পারেন।

আপনার প্রোগ্রামটিতে "ওপেন ফাইল" কথোপকথনটি কীভাবে সেট আপ করা আছে তার উপর নির্ভর করে আপনার সমস্যা হতে পারে। তবে আপনার যদি এমন একক ফোল্ডার থাকে যেখানে আপনার সমস্ত ফাইল রয়েছে তবে আপনি কেবল এটি ব্যবহার করতে সক্ষম হবেন।

আরও জটিল, তবে সম্ভাব্যতর উত্তম উপায় হ'ল প্রক্সি প্রোগ্রাম তৈরি করা। সমস্ত ফাইল এক্সটেনশান রাখুন, তবে সেগুলি প্রক্সি প্রোগ্রাম দ্বারা খোলার আছে। আপনার প্রোগ্রামটিকে বাইনারি পরীক্ষা করতে এবং এটি কোন ধরণের ফাইল এবং কোন প্রোগ্রামটি শুরু করতে হবে তা চয়ন করুন। এটির জন্য আপনাকে আপনার প্রোগ্রামটি লেখার জন্য কিছুটা সময় ব্যয় করতে হবে যা আপনার পক্ষে উপযুক্ত বা নাও হতে পারে।


হ্যাঁ, তবে সম্পূর্ণ আলাদা এক্সটেনশন ব্যবহারের অর্থ আপনি প্রোগ্রামগুলির মধ্যে থেকে প্রায়শই ফাইলগুলি খুলতে পারবেন না ।
এন্ডোলিথ

হ্যাঁ আমি এটা দেখিয়েছি। আমি যে দ্বিতীয় পদ্ধতিটি প্রস্তাব করেছি তাতে যদিও সমস্যা হবে না।
জোয়েল

2

মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও আপনার শেষ ধারণাটি প্রয়োগ করে। আপনি যখন .sln ফাইল চালু করেন, তখন একটি ছোট স্টাব সমাধানের সংস্করণ নম্বরটি পরীক্ষা করে এবং ভিজ্যুয়াল স্টুডিওর সঠিক সংস্করণ চালু করে (যদি আপনি একাধিক সংস্করণ ইনস্টল করেছেন)।

অবশ্যই, এখানে সমন্বয় কিছুটা সহজ, যেহেতু (এ) ফাইল ফর্ম্যাটটি এর জন্য ডিজাইন করা হয়েছে এবং (খ) এগুলি একই নির্মাতার কাছ থেকে একই সফ্টওয়্যারটির সমস্ত সংস্করণ।


1

দ্রুত সমাধান হ'ল এক্সপ্লোরার প্রসঙ্গ মেনুতে অতিরিক্ত প্রসঙ্গের এন্ট্রি যুক্ত করা। বা 'ওপেন উইথ' কনটেক্সট এন্ট্রি ব্যবহার করতে। প্রথমটি আরও স্বাচ্ছন্দ্যযুক্ত যেহেতু কেউ কল প্যারামিটার যুক্ত করতে এবং 'বলার' নাম নির্দিষ্ট করতে পারে। এটি একই প্রোগ্রামের বিভিন্ন সংস্করণ (যদি সমান্তরাল ইনস্টল থাকে) সহ একটি ফাইল খোলার অনুমতি দেয়।

অবশ্যই, এই অপ্রোচ স্বয়ংক্রিয় নয়। একটি সঠিক প্রয়োগ জানতে হবে। তবে ফাইলের ধরণের জন্য যেখানে ডাটাবেস ভিত্তিক সনাক্তকরণ ব্যর্থ হবে (যেমন, "ম্যাজিক নম্বর" ছাড়াই পাঠ্য ফাইল বা অন্যান্য ফাইল), আপনার সর্বদা পছন্দ থাকে।

বিটিডাব্লু: কম পরিচিত ওএস 'জিওএস' (যা তার উইন্ডোজের প্রতিযোগী ছিল এবং তার থেকে অনেক দূরে ছিল) এমন সমস্ত ফাইলের জন্য একটি নির্দিষ্ট 256 বাইট শিরোলেখ ছিল যেখানে তৈরি করা অ্যাপ্লিকেশন, আইকনটির একটি কপিরাইট নোটিস সংরক্ষণ করা হয়েছিল (এর জন্য একটি মুক্ত ক্ষেত্র সহ) নিজস্ব নোট)। যেহেতু এটি ফাইলের একটি অংশ ছিল এবং ফাইল সিস্টেম বা কোনও ওএস অভিধান নয়, ফাইলগুলি যখন ফাইল সিস্টেম জুড়ে বা অন্য কোনও ওএসে স্থানান্তরিত করা হত তখন এটি স্বচ্ছ ছিল (W95 এর জন্য এক্সপ্লোরার এক্সটেনশন ছিল)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.