Wiele programów używa tego samego rozszerzenia pliku, ale formaty są zupełnie inne i niekompatybilne. Na przykład mam .sch
pliki na komputerze, które są w co najmniej 5 różnych formatach (TINA, PSpice, PADS, Protel i Eagle). Czy istnieje sposób, aby system Windows traktował je inaczej, tak aby dwukrotne kliknięcie takiego pliku otworzyło go w programie, w którym ma zostać otwarty?
Linux używa magicznych liczb w samych plikach do rozróżnienia i używa tylko rozszerzeń plików jako planu awaryjnego. (Wszystkie pliki PNG zaczynają się 89 50 4E 47 0D 0A 1A 0A
na przykład od bajtów , bez względu na to, jak je nazwiesz). Byłoby miło, gdyby system Windows mógł to obsługiwać, ale prawdopodobnie bardzo trudne do wdrożenia. Może coś prostszego, jak rozszerzenie drugiego poziomu, takie jak filename.program1.sch
i filename.program2.sch
? Może jakiś filtr, który zmienia nazwy plików w locie?
Lepszy pomysł: kojarzenie niejednoznacznego rozszerzenia z preprocesorem (plik .bat lub dedykowana aplikacja), który sprawdza rozszerzenie drugiego poziomu lub przechodzi do samego pliku i skanuje w poszukiwaniu magicznej liczby, a następnie uruchamia odpowiedni program?
Odpowiedzi:
System Windows nie uruchamia plików na podstawie żadnych informacji w pliku - zbudowanie bazy danych zajęłoby niewiarygodnie dużo pracy i programowania. Jedynym prawdziwym sposobem na identyfikację pliku są podpisy binarne w pliku, nawet jeśli plik go zawiera, i to zależy od autora oprogramowania do wdrożenia.
W systemie Windows pliki są przekazywane do programu określonego dla określonego rozszerzenia pliku. System Windows określa rozszerzenie pliku jako podciąg, który następuje po ostatnim wystąpieniu kropki, więc nie jest to możliwe w przypadku opublikowanych nazw plików.
Musisz albo zmienić nazwę plików (i nadać im unikalne rozszerzenia), albo napisać plik wsadowy, aby uruchomić odpowiednią aplikację. Aby uzyskać więcej informacji, zobacz ten artykuł Technet .
źródło
Sam to rozwiązałem:
Stworzyłem skrypt w języku Python, który odczytuje kilka pierwszych bajtów pliku i porównuje je ze słownikiem, a następnie uruchamia odpowiedni program na podstawie magicznych liczb.
Najnowsza wersja będzie tutaj: Uruchom niejednoznaczne pliki w odpowiednim programie
Próbowałem powiązać rozszerzenie pliku z tym skryptem, ale Windows 7 mi na to nie pozwolił. Po prostu skojarzyło to go z Pythonem, więc wszedłem do rejestru i ręcznie dodałem nazwę skryptu.
Pokój do poprawy, ale działa. Mogę kliknąć dwukrotnie różne pliki z tym samym rozszerzeniem .sch i otwierają się w różnych aplikacjach.
Aktualizacja: przekonwertowałem go na plik .exe przy użyciu cx_freeze, z zewnętrznym plikiem konfiguracyjnym YAML, i łatwo go powiązać. Zobacz także tę propozycję libmagiczną . Nie jestem pewien, czy powinienem zrobić z tego pełnoprawny „program uruchamiający libmagic dla systemu Windows”, czy też lepiej jest obsługiwać tylko jedno rozszerzenie pliku z jednym .exe i prostym plikiem YAML.
źródło
Aby rozpocząć, możesz zmienić nazwę jednego z typów plików, aby mieć nowe rozszerzenie, i użyć okna dialogowego „otwórz za pomocą”, aby ustawić domyślny program do otwierania tego rodzaju plików.
Nie rozwiązuje to jednak problemu zmiany nazwy. Ale upraszczasz rzeczy, tworząc specjalny folder, w którym umieszczasz wszystkie pliki z jednego z programów. Następnie możesz napisać skrypt, aby automatycznie zmieniać nazwy plików w tym folderze na nowe rozszerzenie pliku.
Możesz mieć problemy z dialogiem „Otwórz plik” w swoim programie, w zależności od jego konfiguracji. Ale jeśli masz jeden folder, w którym znajdują się wszystkie twoje pliki, powinieneś być w stanie po prostu z niego korzystać.
Bardziej skomplikowanym, ale potencjalnie lepszym sposobem byłoby stworzenie programu proxy. Zachowaj wszystkie rozszerzenia plików, ale niech zostaną otwarte przez program proxy. Poproś twój program o sprawdzenie pliku binarnego i wybranie, który typ pliku to jest i który program uruchomić. Będzie to wymagało poświęcenia czasu na napisanie programu, co może, ale nie musi być tego warte.
źródło
Microsoft Visual Studio wdraża twój ostatni pomysł. Po uruchomieniu pliku .sln mały kod pośredniczący sprawdza numer wersji rozwiązania i uruchamia prawidłową wersję programu Visual Studio (jeśli masz zainstalowanych wiele wersji).
Oczywiście koordynacja tutaj jest nieco łatwiejsza, ponieważ (A) format pliku jest do tego przeznaczony i (B) wszystkie są wersjami tego samego oprogramowania od tego samego producenta.
źródło
Szybkim rozwiązaniem jest dodanie dodatkowych pozycji kontekstowych do menu kontekstowego eksploratora. Lub użyć wpisu kontekstowego „otwórz za pomocą”. Pierwszy jest wygodniejszy, ponieważ można dodawać parametry połączeń i określać nazwy „mówiące”. Pozwala również na otwarcie pliku z różnymi wersjami tego samego programu (jeśli jest zainstalowany równolegle).
Oczywiście to podejście nie jest automatyczne. Trzeba znać właściwą aplikację. Ale w przypadku typów plików, w których wykrywanie baz danych nie powiodło się (np. Pliki tekstowe lub inne pliki bez „magicznej liczby”), zawsze masz wybór.
BTW: Mniej znany system operacyjny „GEOS” (który był konkurentem Win3 w swoim tiemi i daleko przed nim) miał stały nagłówek 256 bajtów dla wszystkich plików, w których aplikacja tworząca, ikona informacji o prawach autorskich były przechowywane (wraz z wolnym polem dla własne notatki). Ponieważ była to część pliku, a nie system plików lub słownik systemu operacyjnego, było przezroczyste, gdy pliki były przenoszone między systemami plików lub nawet do innego systemu operacyjnego (istniało rozszerzenie eksploratora dla W95).
źródło