Je voudrais utiliser un script shell bash du SendTo
dossier. Lorsque je mets un raccourci vers un lot ou un fichier exe dans le SendTo
dossier, il apparaît dans le Send To
sous-menu contextuel du shell , mais ne le fait pas lorsque le raccourci pointe vers un script shell.
Le système d'exploitation sur lequel je teste ceci est Win7 Home Premium SP1. L'extension est .sh
associée à bash.exe de MinGW.
Mon script shell a une .sh
extension et j'ai essayé de dissocier celle-ci .sh
(je pense que MinGW l'a configurée initialement, mais cela n'a pas fonctionné) à l'aide de cet utilitaire et j'ai essayé de la réassocier pour utiliser bash:
ftype ShellScript=c:\MinGW\msys\1.0\bin\bash.exe -c "'%1' %2"
assoc .sh=ShellScript
dans un shell admin cmd. Bien que cela fonctionne avec une invite de commande et le shell Explorer (via un double clic), il n'apparaîtra pas dans le Send To
menu et n'acceptera pas de paramètre en faisant glisser un fichier directement au-dessus du script.
Est-ce que quelqu'un sait comment je ferais cela?
Move to *dir*
), alors je pense qu'il ne prend pas de paramètres pour une raison quelconque, même s'il est exécuté si vous double-cliquez dessus. Avez-vous une idée du pourquoi?c:\MinGW\msys\1.0\bin\bash.exe -c C:\Path\To\Your\Script.sh
comme cible pour le raccourciSendTo
?Réponses:
Cela activera le glisser-déposer vers n’importe quel script. Vous pouvez en placer un dans le dossier SendTo et l'utiliser ultérieurement.
Exportation du registre:
La partie hexadécimale est celle
"C:\cygwin\bin\bash.exe -c "source $0;read" %1 %*"
qui est encodée dans l'exportation.Vous voudrez probablement supprimer les
read
tests ultérieurs pour pouvoir écrire des scripts qui exécutent une tâche sans laisser de fenêtre ouverte. Si vous en avez besoin pour des scripts uniques, vous pouvez toujours l'ajouter et ajouter leur fin.À utiliser
assoc .ext=ShellFile
après l’importation pour lier toute extension de fichier souhaitée à cette fonctionnalité. DropHandler, dans cet exemple, fonctionne pour Windows XP et Windows 7 (probablement aussi avec d'autres) et signifie fondamentalement "exécutez la commande, avec tous les noms de fichiers supprimés en tant qu'arguments".Utilisez ceci comme un script (
echotest.ext
) pour tester les fonctionnalités de base:la source
source
éliminé l'invocation d'un autre shell et répondu à ma question secondaire sur le glisser-déposer. Malheureusement, ce n'est pas la question principale, donc malheureusement, vous ne recevrez pas la prime. Mais merci. J'ai essayé de comprendre cela sans succès. (Y)source
, c’est vraiment un bon point. @Adrian: Vous savez maintenant pourquoi SU ne vous a pas laissé attribuer la prime trop rapidement. La réponse de IMHO Squeezy mérite la prime, car sa réponse est plus élégante; si vous vous sentez mal à propos de cela,;)
vous pouvez toujours accepter ma réponse (car cela résout également votre problème), mais je ne serais pas d'accord non plus.Voici comment passer un argument à une
bash
fonction shell viaSendTo
(ou via un glisser-déposer). A titre d'exemple, j'ai utilisé le Builtinecho
. Définissez la cible de votre lien dans leSendTo
dossier comme suit:Ici,
$0
correspond au premier argument après la ligne de commande donnée a) , c'est-à-dire le nom de fichier complet du fichier sur lequel l'action sendto a été exécutée.read
laisse la fenêtre ouverte pour que vous puissiez lire le message. (J'ai testé cela avec cygwinbash
, mais je pense que mingwbash
devrait également fonctionner.)Dans votre cas, la cible devrait être
Votre script peut maintenant traiter le nom de fichier. Cependant, notez que le nom de fichier est transmis au script en tant que premier argument; ainsi, dans le script, le nom de fichier est référencé
$1
.Dernier point, mais non le moindre, voici deux captures d'écran en résumé:
a) Vous avez cité
man bash
:Pour comprendre cela, utilisez par exemple la ligne cible suivante:
Cela va imprimer
This is Foo
, alors queva imprimer
This is Baz
. Donc, la "chaîne" est tout ce qui se trouve entre les apostrophes et ceFoo Bar Baz
sont les arguments.la source
Si Windows refuse de créer un lien vers un fichier .sh, vous pouvez peut-être essayer d'utiliser un fichier .bat qui appelle le script .sh.
Si cela ne fonctionne pas, vous pouvez également essayer de compiler le fichier .bat en .exe.
Un rapide google trouvé:
Compilateur batch
Bat-To-Exe
la source
Essayez cette version mise à jour du fichier REG (remarque: j'utilise Windows 7 64 bits; utilisez-le à la
System32
place deSysWOW64
Win7, Vista ou XP 32 bits):Cela permettra également d'exécuter vos scripts shell en tant qu'administrateur, comme tout fichier .bat. En d'autres termes, tous les scripts de shell UAC sont compatibles avec Windows Vista et Windows 7 ou 8.
la source