L'utilisation de cette arborescence/hashbang dans l'Invite de Commande Windows
Je suis actuellement en utilisant le servir script pour servir des répertoires avec Node.js sur Windows 7. Il fonctionne bien dans le shell de MSYS ou à l'aide de sh
, comme je l'ai mis node.exe et de le servir de script dans mon ~/bin (qui est sur mon CHEMIN), et en tapant juste "servir" d'œuvres à cause de ça Shebang (#!
) directive indique au shell à exécuter avec le noeud.
Cependant, Invite de Commande Windows ne semble pas à l'appui de fichiers normaux sans un *.chauve-souris ou *.exe, ni le beau spectacle de la directive. Existe-il des clés de registre ou d'autres hacks que je peux obtenir pour forcer ce comportement de l'intégré dans cmd.exe
?
Je sais que je pourrais juste écrire un fichier de commandes à exécuter avec le noeud, mais je me demandais si cela pourrait être fait dans un fasion donc je n'ai pas d'écrire un script pour chaque script comme celui-ci?
Mise à jour: en Fait, je pensais, est-il possible d'écrire un gestionnaire par défaut pour tous les fichiers non trouvés", etc. que je pouvais tenter automatiquement en cours d'exécution dans sh -c
?
Grâce.
- Avez-vous envisagé de revenir à la mise à jour de la accepté de répondre? Celui que vous avez accepté est incorrecte, et vous avez une très bonne alternative, juste au-dessous.
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible grâce à la
PATHEXT
variable d'environnement. Qui, par exemple, est également utilisé pour inscrire.vbs
ou.wsh
l'exécution de scripts "directement".Abord, vous avez besoin d'étendre la
PATHEXT
variable pour contenir l'extension de ce servir de script (dans la suite je suppose que l'extension est .foo que je ne sais pas Node.js)Les valeurs par défaut sont quelque chose comme ceci:
Vous avez besoin de le modifier (via le Panneau de Contrôle) pour ressembler à ceci:
En utilisant le control panel (Panneau de configuration -> Système -> Paramètres Système Avancés -> Variables d'Environnement est nécessaire pour persister la valeur de la variable PATHEXT.
Ensuite, vous devez vous inscrire à la bonne "interprète" avec cette extension, en utilisant les commandes
FTYPE
etASSOC
:(L'exemple ci-dessus est sans vergogne prises à partir de l'aide fournie par
ftype /?
.)ASSOC et FTYPE écrit directement dans la base de registre, de sorte que vous aurez besoin d'un compte administratif pour les exécuter.
setx PATHEXT "%PATHEXT%;.FOO" -m
Ressemble vraiment à quelqu'un qui sait écrire des fichiers batch mieux que j'ai a également demandé à ce. Leur fichier de commandes peut fonctionner mieux.
http://whitescreen.nicolaas.net/programming/windows-shebangs
Non, il n'y a aucun moyen de "forcer" l'invite de commande pour le faire.
Windows simplement n'a pas été conçu comme Unix/Linux.
Est-il un shell extension qui fait quelque chose de similaire?
Pas que j'en ai entendu parler, mais qui doivent être posées sur les Super-Utilisateur, pas ici.
Voici une méthode simple pour forcer windows à l'appui de cette arborescence n'a toutefois une mise en garde concernant le nommage des fichiers. Copiez le texte suivant dans un fichier de commandes et de suivre idée générale de REM commentaires.
Il n'y a pas moyen d'exécuter le fichier aléatoire, sauf si c'est un fichier binaire exécutable. Windows fonction CreateProcess() tout simplement pas conçus pour cela. Les seuls fichiers, il peut exécuter sont ceux avec
MZ
la magie, ou avec des extensions de%PATHEXT%
liste.Cependant, CMD a lui-même un support limité pour l'personnalisé interprètes à travers
EXTPROC
clause. La limitation est que l'interprète doit également de soutenir et d'omettre cette clause dans son exécution.Invite de commande ne prend pas en charge shebang , cependant, il ya beaucoup de techniques hybrides pour des langues différentes qui vous permettent de combiner par lots et d'autres langues de syntaxe dans un fichier.Que votre question porte sur node.js voici un batch-node.js hybride (enregistrer avec
.bat
ou.cmd
extension):Il est possible d'être fait avec de nombreux autres langages comme Ruby,Perl,Python,PHP et etc.