Je voudrais savoir quelles sont les approches que vous utilisez pour gérer les exécutables de votre système. Par exemple, j'ai presque tout accessible via la ligne de commande, mais maintenant j'arrive à la limite de la chaîne de chemin, donc je ne peux plus ajouter de dir.
Alors que recommandez-vous? Il y a longtemps, j'ai essayé d'utiliser les softLinks des exécutables dans un Dir qui appartenait au chemin, mais cette approche n'a pas fonctionné. Lancer le "exécutable uniquement" vers un Dir connu, a les problèmes que presque toutes les applications nécessitent un ensemble de fichiers, donc c'est également mauvais. Jetez l'exécutable et tous ses fichiers dans un Dir connu, mmm cela fonctionnera, mais la possibilité d'obtenir un conflit dans le nom des fichiers est très très élevée. Créer un HardLink? Je ne sais pas. Qu'est-ce que tu penses?
Réponses:
Une façon dont je peux penser est d'utiliser d'autres variables d'environnement pour stocker des chemins partiels; par exemple, si vous avez
alors vous pouvez créer une nouvelle variable d'environnement telle que
après quoi vos chemins originaux deviennent
EDIT: Une autre option consiste à créer un
bin
répertoire contenant les.bat
fichiers qui pointent vers les.exe
fichiers appropriés .EDIT 2: Le commentaire de Ben Voigt sur une autre réponse mentionne que l'utilisation d'autres variables d'environnement comme suggéré pourrait ne pas réduire la longueur de
%PATH%
car elles seraient développées avant d'être stockées. Cela peut être vrai et je ne l'ai pas testé. Une autre option consiste cependant à utiliser des formulaires 8dot3 pour des noms de répertoire plus longs, par exemple, celaC:\Program Files
équivaut généralement àC:\PROGRA~1
. Vous pouvez utiliserdir /x
pour voir les noms plus courts.EDIT 3: Ce simple test me porte à croire que Ben Voigt a raison.
À la fin de cela, vous voyez la sortie
hellohello
plutôt quebyehello
.EDIT 4: Si vous décidez d'utiliser des fichiers batch pour éliminer certains chemins
%PATH%
, vous pourriez être préoccupé par la façon de transmettre les arguments de votre fichier batch à votre exécutable afin que le processus soit transparent (c'est-à-dire que vous ne remarquerez aucune différence entre l'appel du fichier batch et l'appel de l'exécutable). Je n'ai pas beaucoup d'expérience dans l'écriture de fichiers batch, mais cela semble fonctionner correctement.En règle générale, vous devez être prudent lorsque vous exécutez des fichiers de commandes à partir d'Internet, car vous pouvez faire toutes sortes de choses avec des fichiers de commandes, comme le formatage de votre disque dur. Si vous ne faites pas confiance au code ci-dessus (que j'ai écrit), vous pouvez le tester en remplaçant la ligne
avec
Idéalement, vous devez savoir exactement ce que fait chaque ligne avant de l'exécuter.
la source
cmd
, notez que vous pouvez utiliser*
pour enregistrer la saisie. Par exemple, à partir de la racine, saisissezdir /x pro*
. Vous y verrez votre répertoire souhaité avec son nom 8dot3. Ensuite, utilisezcd
pour y accéder et répétez le processus.$PATH
qui fonctionne de manière très similaire à%PATH%
Windows, donc je ne suis pas sûr de votre point de vue. Par convention, les noms de répertoires UNIX ont tendance à être plus courts que dans Windows et, par conséquent, ont$PATH
également tendance à être plus courts.Cela analysera votre variable d'environnement% PATH% et convertira chaque répertoire en son équivalent de nom court, puis le reconstituera:
Prenez la sortie et mettez à jour la variable PATH dans les variables d'environnement.
la source
%%~sa
. J'ai essayé de mettre à jour la réponse mais cela ne me laissera pas sauf si je change 6 caractèressi vous utilisez Windows Vista ou version ultérieure, vous pouvez créer un lien symbolique vers le dossier. par exemple:
mklink /d C:\pf "C:\Program Files"
ferait un lien de même
c:\pf
que votreprogram files
dossier. J'ai rasé 300 caractères de mon chemin en utilisant cette astuce.la source
c:\Program Files
etc:\Program Files (x86)
par les variables prédéfinies%ProgramFiles%
et%ProgramFiles(x86)%
tenforums.com/tutorials/ ... Celles-ci ne sauvegardent que quelques caractères chacune , mais si vous êtes VRAIMENT sur le point de maximiser PATH, cela pourrait faire la différence. Pour cette question, je vais créer% pf% et% pfx% qui résolvent les chemins corrects. Merci pour l'idée! :)Au cas où quelqu'un serait intéressé ...
Je trouve que je n'ai jamais vraiment besoin de tous ces chemins à la fois, donc je crée un tas de fichiers batch "d'initialisation" qui modifient le chemin en conséquence.
Par exemple, si je voulais faire du développement C ++ dans Eclipse, je ferais:
Ceci est également pratique pour éviter les conflits entre les exécutables du même nom (comme les compilateurs C ++ et D, qui ont tous deux un make.exe).
Mes fichiers batch ressemblent généralement à ceci:
Je trouve cette approche relativement propre et je n'ai pas encore rencontré de problèmes avec elle.
la source
Je n'ai généralement pas à m'inquiéter à ce sujet (je n'ai pas rencontré de limite de taille de chemin - je ne sais même pas ce que c'est sur les systèmes Windows modernes), mais voici ce que je pourrais faire pour éviter de mettre le répertoire d'un programme dans le chemin:
c:\util
répertoire qui se trouve sur le cheminsinon, j'ajouterai un simple fichier cmd / batch dans le
c:\util
répertoire qui ressemble à quelque chose comme:qui crée essentiellement un alias pour la commande. Ce n'est pas forcément parfait. Certains programmes insistent vraiment pour être dans le chemin (c'est assez rare de nos jours), et d'autres programmes qui essaient de l'invoquer pourraient ne pas le trouver correctement. Mais pour la plupart des utilisations, cela fonctionne bien.
Mais en général, je n'ai pas eu à me soucier d'éviter d'ajouter des répertoires au chemin.
la source
cmd /c
, mais cela signifie à son tour que le script de construction devient spécifique à Windows: / J'ai posé une question à ce sujet dans une question distincte .Une autre idée: utilisez DIR / X pour déterminer les noms courts générés pour les noms de fichiers non-8dot3. Ensuite, utilisez-les dans votre% PATH%.
Par exemple, «C: \ Program Files» devient «C: \ PROGRA ~ 1».
la source
Utilisez la clé de registre App Path au lieu de la variable de chemin pour les chemins spécifiques à l'application:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx
la source
J'ai écrit et utilisé à chaque fois un flux standard (stdin / stderr / stdout) et un programme de code de sortie PROXY (appelé dispatcher https://github.com/131/dispatcher )
Tous les programmes CLI que j'utilise (node, php, python, git, svn, rsync, plink ...) que j'utilise sont en fait le même fichier exe (environ 10 ko, que je nomme différemment), que j'ai mis dans le même annuaire. Un fichier de texte en clair statique factice effectue le "mappage du nom du fichier proxy vers un véritable exe".
Dispatcher utilise l'API Win32 de gestion des processus de bas niveau pour être absolument transparent.
En utilisant ce logiciel, je n'ai qu'un seul répertoire supplémentaire défini dans mon PATH pour tous les programmes que je pourrais utiliser.
la source
Créer un dossier c: \ bin en ajoutant à votre chemin et en établissant des liens fixes comme vous l'avez dit pourrait raccourcir la chaîne. Ajoutez peut-être une variable pf aux variables système avec la valeur c: \ Program Files, puis remplacez c: \ Program Files par% pf% dans le chemin.
Éditer:
Créez un lecteur virtuel. subst p: "c: \ program files"
la source
Je suis ces étapes pour rendre les entrées gérables:
Création de différents utilisateurs pour différentes combinaisons d'utilisation de progiciels. Exemple: (a) Création d'un site Web utilisateur pour rendre disponible tous les logiciels de développement Web; b) Création d’une base de données d’utilisateurs pour rendre disponibles tous les progiciels de base de données et d’entreposage de données. N'oubliez pas que certains logiciels peuvent créer plusieurs entrées. Ou parfois, je divise cela en utilisateurs spécifiques à l'oracle et à MSSQL et aux utilisateurs spécifiques à l'oracle. J'ai mis MySQL / PostgreSQL, tomcat, wamp, xamp tous dans le compte utilisateur webr.
Si possible, installez des packages communs tels que office, photoshop, .. en tant que système spécifique disponible pour tous les utilisateurs et des packages spéciaux en fonction de l'utilisateur. Bien sûr, j'ai dû me connecter à différents utilisateurs et les installer. Tous les logiciels ne proposent pas cette option. Si l'option "installer pour cet utilisateur uniquement" n'est pas disponible, installez-la pour l'ensemble du système.
J'évite d'installer des programmes dans le dossier Program File (x86) ou dans Program File. J'installe toujours dans le répertoire de base. Par exemple, MySQL 64 bits va dans "C: \ mysql64" et MySQL 32 bits va dans le dossier "C: \ mysql". Je suppose toujours d'ajouter un suffixe 64 uniquement pour les logiciels 64 bits. Si aucun suffixe, alors c'est un 32 bits. Je suis la même chose pour Java et d'autres. De cette façon, mon chemin sera plus court, sans inclure "C: \ Program File (x86)". Pour certains logiciels, le fichier de configuration devra peut-être être modifié pour afficher exactement l'emplacement du fichier .exe. Seul le programme qui demande à être installé dans "C: \ Program File (x86)" sera installé dans ce dossier. Je me souviens toujours de raccourcir les noms. J'évite le numéro de version comme tomcat / release / version-2.5.0.3 de tels détails. Si j'ai besoin de la version connue, Je crée un fichier par version de nom et le mets dans le dossier tomcat. En général, raccourcissez le lien autant que possible.
Incluez n'importe quel lot pour remplacer le lien abrégé vers le chemin, si toutes les étapes ci-dessus ont dépassé la limite de Windows.
Connectez-vous ensuite à l'utilisateur spécifique à l'utilisation (application mobile, ou base de données / entreposage de données ou développement Web .. ..) et effectuez les tâches appropriées.
Vous pouvez également créer des fenêtres virtuelles dans les fenêtres. Tant que vous disposez d'une copie du système d'exploitation sous licence, la création de plusieurs fenêtres virtuelles avec la même clé est possible. Vous pouvez placer des packages spécifiques pour une tâche particulière sur cette machine. Vous devez lancer une VM distincte à chaque fois. Certains packages gourmands en mémoire tels que les réalisateurs de films d'animation 3D doivent tous être placés dans la machine principale, pas dans la machine virtuelle car la machine virtuelle n'aura qu'une partie de la RAM disponible pour son utilisation. Cependant, il est difficile de démarrer chaque machine virtuelle.
la source
Les solutions ci-dessus ne fonctionnent que si vous pouvez réduire votre chemin. Dans mon cas, ce n'était pas vraiment une option, et c'était compliqué de devoir exécuter un script à chaque fois que j'ouvrais une invite de commande. J'ai donc écrit un script simple qui s'exécute automatiquement lors de l'ouverture de l'invite de commande et ajoute le contenu d'un fichier texte à votre chemin.
Il y a aussi des contextes où l'exécution de ce script casse les choses (par exemple, dans un shell github ou cygwin), donc j'ai également ajouté un fichier contenant une liste de chemins qui, si l'invite de commande est lancée dans ceux-ci, la variable de chemin est n 'pas changé via le script de démarrage qui met normalement à jour le chemin.
Et Path.txt ressemblera à quelque chose comme
Alors que Dontsetup.txt ressemblera à quelque chose comme
Pour que cela s'exécute automatiquement au démarrage, ouvrez regedit, accédez à HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor, puis cliquez avec le bouton droit sur la droite et appuyez sur nouveau -> Valeur multi-chaînes. Nommez-le AutoRun. Définissez sa valeur sur
ou partout où vous avez stocké le fichier de commandes ci-dessus.
la source
Je n'ai pas essayé, mais le fractionnement de PATH en parties fonctionnera-t-il et les joignera-t-il dans le travail final des variables?
Exemple d'abord, disons que vous avez quelque chose comme
PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}
Au lieu de cela, vous créez:
la source