Chciałbym wiedzieć, jakie są podejścia, których używasz do zarządzania plikami wykonywalnymi w systemie. Na przykład mam prawie wszystko, co jest dostępne z linii poleceń, ale teraz doszedłem do granicy ciągu ścieżki, więc nie mogę dodać więcej dir.
Więc co polecasz? Dawno temu próbowałem użyć miękkich linków plików wykonywalnych w katalogu należącym do ścieżki, ale to podejście nie działało. Wrzuć „tylko plik wykonywalny” do znanego katalogu, ma problemy z tym, że prawie każda aplikacja wymaga zestawu plików, więc to również jest złe. Wrzuć plik wykonywalny i wszystkie jego pliki do znanego katalogu, mmm to zadziała, ale możliwość wystąpienia konfliktu w nazwie plików jest bardzo duża. Utworzyć HardLink? Nie wiem. Co myślisz?
Odpowiedzi:
Jednym ze sposobów, które przychodzą mi do głowy, jest użycie innych zmiennych środowiskowych do przechowywania częściowych ścieżek; na przykład, jeśli masz
następnie możesz utworzyć nową zmienną środowiskową, taką jak
po którym stają się twoje oryginalne ścieżki
EDYCJA: Inną opcją jest utworzenie
bin
katalogu zawierającego.bat
pliki wskazujące na odpowiednie.exe
pliki.EDYCJA 2: Komentarz Bena Voigta do innej odpowiedzi wspomina, że użycie innych zmiennych środowiskowych zgodnie z sugestią może nie skrócić długości,
%PATH%
ponieważ zostałyby rozwinięte przed zapisaniem. Może to prawda i nie testowałem tego. Inną opcją jest jednak użycie formularzy 8dot3 dla dłuższych nazw katalogów, na przykładC:\Program Files
zazwyczaj jest to odpowiednikC:\PROGRA~1
. Możesz użyć,dir /x
aby zobaczyć krótsze nazwy.EDYCJA 3: Ten prosty test prowadzi mnie do przekonania, że Ben Voigt ma rację.
Na końcu zobaczysz
hellohello
raczej wyjście niżbyehello
.EDYCJA 4: W przypadku, gdy zdecydujesz się użyć plików wsadowych do wyeliminowania niektórych ścieżek
%PATH%
, możesz martwić się, jak przekazać argumenty z pliku wsadowego do pliku wykonywalnego, aby proces był przezroczysty (tj. Nie zauważysz żadnej różnicy między wywołaniem pliku wsadowego a wywołaniem pliku wykonywalnego). Nie mam dużego doświadczenia w pisaniu plików wsadowych, ale wydaje się, że działa dobrze.Zasadniczo należy zachować ostrożność podczas uruchamiania plików wsadowych z Internetu, ponieważ z plikami wsadowymi można wykonywać różne czynności, takie jak formatowanie dysku twardego. Jeśli nie ufasz powyższemu kodowi (który napisałem), możesz go przetestować, zastępując wiersz
z
Idealnie byłoby, gdybyś dokładnie wiedział, co robi każda linia, zanim ją uruchomisz.
źródło
cmd
, pamiętaj, że możesz użyć,*
aby zaoszczędzić pisanie. Na przykład od roota wpiszdir /x pro*
. Zobaczysz tam żądany katalog wraz z jego nazwą 8dot3. Następnie użyj,cd
aby przejść do niego i powtórz proces.$PATH
który działa bardzo podobnie do%PATH%
systemu Windows, więc nie jestem pewien, o co ci chodzi. Zgodnie z konwencją nazwy katalogów w systemie UNIX są zazwyczaj krótsze niż w systemie Windows, w wyniku czego są$PATH
również krótsze.Spowoduje to przeanalizowanie zmiennej środowiskowej% PATH% i przekonwertowanie każdego katalogu na jego odpowiednik skróconej nazwy, a następnie złożenie wszystkiego w całość:
Weź dane wyjściowe i zaktualizuj zmienną PATH w zmiennych środowiskowych.
źródło
%%~sa
. Próbowałem zaktualizować odpowiedź, ale nie pozwoli mi to, chyba że zmienię 6 znakówjeśli używasz systemu Windows Vista lub nowszego, możesz utworzyć symboliczne łącze do folderu. na przykład:
mklink /d C:\pf "C:\Program Files"
utworzy łącze, podobnie jak
c:\pf
Twójprogram files
folder. Używając tej sztuczki, ogoliłem 300 znaków z mojej ścieżki.źródło
c:\Program Files
ic:\Program Files (x86)
wstępnie zdefiniowanymi zmiennymi%ProgramFiles%
oraz%ProgramFiles(x86)%
tenforums.com/tutorials/ ... Każdy z nich oszczędza tylko kilka znaków , ale jeśli NAPRAWDĘ jesteś na skraju maksymalnego wykorzystania ŚCIEŻKI, może to być różnica. W tym celu utworzę% pf% i% pfx%, które będą rozwiązywać do prawidłowych ścieżek. Dzięki za pomysł! :)Na wypadek gdyby ktoś był zainteresowany ...
Uważam, że nigdy nie potrzebuję wszystkich tych ścieżek na raz, więc tworzę kilka plików wsadowych "inicjalizacyjnych", które odpowiednio modyfikują ścieżkę.
Na przykład, gdybym chciał zrobić coś w C ++ w Eclipse, zrobiłbym:
Jest to również przydatne, aby uniknąć konfliktów między plikami wykonywalnymi o tej samej nazwie (takimi jak kompilatory C ++ i D, które mają program make.exe).
Moje pliki wsadowe zazwyczaj wyglądają tak:
Uważam, że to podejście jest stosunkowo czyste i nie napotkałem jeszcze żadnych problemów.
źródło
Generalnie nie muszę się tym martwić (nie napotkałem ograniczenia rozmiaru ścieżki - nawet nie wiem, co to jest w nowoczesnych systemach Windows), ale oto, co mogę zrobić, aby uniknąć umieszczania katalogu programu w ścieżka:
c:\util
katalogu znajdującego się na ścieżcew przeciwnym razie dodam prosty plik cmd / wsadowy do
c:\util
katalogu, który wygląda mniej więcej tak:co zasadniczo tworzy alias dla polecenia. To niekoniecznie jest idealne. Niektóre programy naprawdę nalegają, aby znaleźć się na ścieżce (obecnie jest to dość rzadkie), a inne programy, które próbują go wywołać, mogą nie znaleźć go poprawnie. Ale w większości zastosowań działa dobrze.
Ale generalnie nie musiałem się martwić o unikanie dodawania katalogów do ścieżki.
źródło
cmd /c
Środkiem zaradczym jest wywołanie polecenia z przedrostkiem , ale to z kolei oznacza, że skrypt budujący staje się specyficzny dla systemu Windows: / Pytałem o to w osobnym pytaniu .Inny pomysł: użyj DIR / X do określenia krótkich nazw generowanych dla nazw plików innych niż 8dot3. Następnie użyj ich w% PATH%.
Na przykład „C: \ Program Files” staje się „C: \ PROGRA ~ 1”.
źródło
Użyj klucza rejestru App Path zamiast zmiennej path dla ścieżek specyficznych dla aplikacji:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx
źródło
Za każdym razem napisałem i używam standardowego strumienia (stdin / stderr / stdout) i programu PROXY z kodem wyjścia (o nazwie dispatcher https://github.com/131/dispatcher )
Wszystkie programy CLI, których używam (node, php, python, git, svn, rsync, plink ...), których używam, są w rzeczywistości tym samym plikiem exe (około 10kb, który po prostu nazywam inaczej), który umieszczam w tym samym informator. Fikcyjny statyczny zwykły plik tekstowy wykonuje „nazwę pliku proxy na prawdziwe odwzorowanie exe”.
Dyspozytor używa niskopoziomowego interfejsu API Win32 do zarządzania procesami, aby zapewnić całkowitą przejrzystość.
Korzystając z tego oprogramowania, mam tylko JEDEN dodatkowy katalog ustawiony w mojej PATH dla wszystkich programów, których mogę używać.
źródło
Utworzenie folderu c: \ bin, dodanie do ścieżki i połączenie twarde, jak powiedziałeś, może skrócić ciąg. Może dodaj zmienną pf do zmiennych systemowych o wartości c: \ Program Files, a następnie zamień c: \ Program Files na% pf% w ścieżce.
Edytować:
Utwórz wirtualny dysk. subst p: "c: \ pliki programu"
źródło
Wykonuję następujące kroki, aby ułatwić zarządzanie wpisami:
Utworzono różnych użytkowników dla różnych kombinacji wykorzystania pakietów oprogramowania. Przykład: (a) Utworzono witrynę internetową użytkownika w celu udostępnienia całego oprogramowania do tworzenia witryn internetowych; (b) Utworzono bazę danych użytkowników w celu udostępnienia całej bazy danych i pakietów oprogramowania do magazynowania danych. Pamiętaj, że niektóre programy mogą tworzyć więcej niż jeden wpis. Lub czasami dzielę to na użytkowników specyficznych dla Oracle, MSSQL i specyficznych dla Oracle. Umieściłem MySQL / PostgreSQL, tomcat, wamp, xamp wszystko na koncie użytkownika webr.
Jeśli to możliwe, zainstaluj popularne pakiety, takie jak office, photoshop itp. Jako specyficzne dla systemu dostępne dla wszystkich użytkowników i specjalne pakiety jako specyficzne dla użytkownika. Oczywiście musiałem zalogować się do różnych użytkowników i je zainstalować. Nie wszystkie programy oferują tę opcję. Jeśli opcja „zainstaluj tylko dla tego użytkownika” nie jest dostępna, zainstaluj ją dla całego systemu.
Unikam instalowania programów w folderze Program File (x86) lub w folderze Program File. Zawsze instaluję w katalogu podstawowym. Na przykład 64-bitowy MySQL trafia do folderu „C: \ mysql64”, a 32-bitowy MySQL do folderu „C: \ mysql”. Zawsze zakładam dodanie przyrostka 64 tylko dla oprogramowania 64-bitowego. Jeśli nie ma przyrostka, jest to wersja 32-bitowa. To samo podążam za Javą i innymi. W ten sposób moja ścieżka będzie krótsza, bez „C: \ Program File (x86)”. W przypadku niektórych programów może być konieczna edycja pliku konfiguracyjnego, aby pokazać, gdzie dokładnie znajduje się plik .exe. Tylko program wymagający instalacji w „C: \ Program File (x86)” zostanie zainstalowany w tym folderze. Zawsze pamiętam o skróceniu nazwisk. Unikam numerów wersji takich jak tomcat / release / version-2.5.0.3 takich szczegółów. Jeśli potrzebuję znanej wersji, Tworzę plik według nazwy wersji i umieszczam go w folderze tomcat. Ogólnie skracaj link tak bardzo, jak to możliwe.
Dołącz dowolną wiązkę, aby zastąpić skrócone łącze do ścieżki, jeśli wszystkie powyższe kroki przekroczyły limit systemu Windows.
Następnie zaloguj się do użytkownika specyficznego dla użytkowania (aplikacja mobilna, baza danych / hurtownia danych lub tworzenie stron internetowych .. ..) i wykonaj odpowiednie zadania.
Możesz także tworzyć wirtualne okna w oknach. Jeśli masz jedną licencjonowaną kopię systemu operacyjnego, możliwe jest tworzenie wielu wirtualnych okien z tym samym kluczem. Możesz umieścić pakiety specyficzne dla określonego zadania na tym komputerze. Za każdym razem musisz uruchamiać oddzielną maszynę wirtualną. Niektóre pakiety wymagające dużej ilości pamięci, takie jak twórcy filmów animowanych 3D, powinny być umieszczane na głównej maszynie, a nie na maszynach wirtualnych, ponieważ maszyny wirtualne będą miały tylko część pamięci RAM dostępnej do użytku. Jednak uruchomienie każdej maszyny wirtualnej jest trudne.
źródło
Powyższe rozwiązania działają tylko wtedy, gdy możesz skrócić swoją ścieżkę. W moim przypadku tak naprawdę nie była to opcja, a uruchamianie skryptu za każdym razem, gdy otwierałem wiersz polecenia, było kłopotliwe. Napisałem więc prosty skrypt, który uruchamia się automatycznie po otwarciu wiersza polecenia i dołącza zawartość pliku tekstowego do ścieżki.
Istnieją również konteksty, w których uruchomienie tego skryptu psuje rzeczy (powiedzmy, w powłoce github lub cygwin), więc dodałem również plik zawierający listę ścieżek, które, jeśli zostanie uruchomiony w nich wiersz polecenia, zmienna ścieżki to n 't zmieniono za pomocą skryptu startowego, który normalnie aktualizuje ścieżkę.
A Path.txt będzie wyglądać mniej więcej tak
Podczas gdy Dontsetup.txt będzie wyglądać mniej więcej tak
Aby uruchomić to automatycznie przy starcie, otwórz regedit, przejdź do HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor, a następnie kliknij prawym przyciskiem myszy po prawej stronie i naciśnij nowy -> Wartość wielociągu. Nazwij to AutoRun. Ustaw jego wartość na
lub w innym miejscu, w którym zapisałeś powyższy plik wsadowy.
źródło
Nie próbowałem tego, ale czy podzielenie PATH na części zadziała i połączenie ich w ostatecznej pracy ze zmiennymi?
Przykład początkowo powiedzmy, że masz coś takiego
PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}
Zamiast tego tworzysz:
źródło