web-dev-qa-db-fra.com

Créer un raccourci Windows par rapport à l'emplacement du dossier?

J'ai un jeu qui utilise cette structure de fichier:

GAME FOLDER
->data
->data->run.bat

Je veux mettre un raccourci vers run.bat dans GAME FOLDER, mais si je le déplace ou si quelqu'un d'autre l'installe, cela ne fonctionnera pas, car la cible est incorrecte. Y at-il un moyen de faire la cible et "commencer dans" par rapport à GAME FOLDER?

55
William

Étape 1:

Faites un clic droit sur votre dossier/bat/et cliquez sur Create Shortcut.

Sous Windows 7, vous aurez bat - Shortcut dans le répertoire actuel.

Sous Windows XP, vous obtiendrez Shortcut to bat.

Étape 2:

Faites un clic droit sur le raccourci que vous venez de créer et cliquez sur Propriétés.

Modifiez Cible (sous l'onglet Raccourci sous Windows 7) comme suit:

%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"

Cliquez sur OK. Sous Windows 7, l’icône de raccourci devient l’icône cmd.exe. C’est probablement acceptable dans le cas d’un raccourci vers un .bat, mais si vous voulez changer l’icône, ouvrez à nouveau les propriétés du raccourci et cliquez --- Changer l’icône ... (encore une fois, sous le raccourci onglet sur Windows 7). À ce stade, vous pouvez Parcourir ... pour une icône ou afficher une liste des icônes système par défaut en entrant

%SystemRoot%\system32\Shell32.dll

à gauche du bouton Browse... et en appuyant sur Enter. Cela fonctionne sous Windows 7 et Windows XP, mais les icônes sont différentes en raison des mises à jour de style (mais elles sont manifestement similaires). Selon la version de Windows où réside le raccourci, l’icône volonté va parfois changer en conséquence.

Plus d'infos:

Voir tilisation de la commande "start" avec les paramètres transmis au programme démarré pour mieux comprendre les guillemets vides au début de la première commande Target.

63
leoj

Selon Microsoft, si vous laissez la zone 'Start In' vide, le script sera exécuté dans le répertoire de travail en cours. J'ai essayé cela sous Windows 7 et cela semble bien fonctionner.

Source: http://support.Microsoft.com/kb/283065

29
Bob Pollack

Essayez d’utiliser Relative (une application en ligne de commande Windows).

Fondamentalement, un raccourci peut avoir un lien relatif, mais Windows ne donne aucun moyen d'en créer un.

7
TimDC

Si vous pouvez définir une variable système (quelque chose comme% MyGameFolder%), vous pouvez l'utiliser dans vos chemins et raccourcis, et Windows remplira le reste du chemin pour vous (c'est-à-dire %MyGameFolder%\data\MyGame.exe).

Voici un petit apprêt . Vous pouvez définir cette valeur via un fichier de commandes ou probablement par programmation si vous indiquez comment vous envisagez de créer votre raccourci.

4
SqlRyan

Vous pouvez créer un raccourci relatif manuellement en modifiant le chemin du fichier . Tout d'abord, dans le menu contextuel habituel, vous créez un nouveau raccourci de Windows pour votre fichier et dans les propriétés -> emplacement de votre fichier: 

%windir%\Explorer.exe "..\data\run.bat"

3
Charles P.

J'aime la solution de leoj3n . Il peut également être utilisé pour définir un répertoire "start in" relatif, ce dont j'avais besoin en utilisant le paramètre start 's/D. Sans/c ou/k dans un argument de cmd , la commande de démarrage suivante ne s'exécute pas./c fermera le shell immédiatement après l'exécution de la commande et/k le gardera ouvert (même après l'exécution de la commande). Donc, si tout ce que vous utilisez crachez au format standard et que vous avez besoin de le voir, utilisez/k.

Malheureusement, selon le fichier spécification de lnk, l’icône n’est pas enregistrée dans le raccourci, mais plutôt "encodée à l’aide de variables d’environnement, ce qui permet de la rechercher sur des machines dont les emplacements varient mais sont exprimés à l’aide de variables . " Il est donc probable que si les chemins changent et que vous essayez de récupérer l'icône de l'exécutable vers lequel vous pointez, elle ne sera pas transférée correctement.

3
darda

Après avoir créé le raccourci que vous avez défini, définissez les éléments suivants dans Propriétés:

Cible: %comspec% /k "data\run.bat"

  • Supprimez le /k si vous ne voulez pas que l'invite reste ouverte après l'avoir exécutée.

Commencer dans: %cd%\data

1
John Thow

Après avoir lu plusieurs réponses, j'ai décidé de le faire avec une solution simple: Au lieu d’un raccourci, j’ai créé un .bat avec une seule ligne pour appeler le .bat principal et cela fonctionnait comme je le voulais.

1
Alexis B.

Je ne sais pas si j'ai raison ou quelque chose me manque, mais pour l'instant (11/07/2016, exécutant Win7 Enterprise SP1), un fichier LNK s'adapte en cas de déplacement ou même de modification de la lettre de lecteur après son affichage. courir à un nouvel endroit! J'ai créé un nouveau raccourci sur ma clé USB et essayé de déplacer le raccourci et sa cible de manière à ce que la position relative reste inchangée, puis j'ai changé la lettre du lecteur. Le raccourci fonctionnait dans les deux cas et le champ cible était adapté après un double-clic dessus.

Il semblerait que Microsoft ait résolu ce problème dans l’une des dernières mises à jour.

S'il vous plaît, quelqu'un confirme cela.

1
Mehrdad Mirreza

La solution la plus simple:> Variables environnementales Petites bestioles pratiques. 

Si l’autre personne doit installer/décompresser n’importe où sur son lecteur système respectif (habituellement c :).

Pour des raisons de démonstration, appelez notre application "test.exe" (il se peut que tout fichier exécutable/fichier ne soit pas obligatoirement exe) et il doit être installé/décompressé dans le dossier MYCOMPANY\MYAPP \.

Ensuite, créez un raccourci qui utilise% SystemDrive%\MYCOMPANY\MYAPP\test.exe comme cible et % SystemDrive%\MYCOMPANY\MYAPP\as démarrer dans.

Alors maintenant, vous voudriez le déployer . En utilisant une application comme "WinRAR".

Le moyen le plus simple est d'utiliser un fichier Zip auto-extractible, soigneusement emballé sous la forme d'un fichier ".exe" J'en utiliserais un pour mon raccourci et un autre pour l'application. Il existe des moyens de créer un fichier Zip auto-extractible qui extrait différents fichiers dans différents répertoires, mais je n'ai pas encore joué avec.

Une autre méthode consiste à créer un extrait automatique pour le raccourci, à l’intégrer à l’extraction automatique de l’application, puis à appliquer un script d’exécution, une fois que vous savez où le fichier va se trouver . etc.

Si vous souhaitez permettre au programme d'installation d'utiliser des répertoires d'installation/décompression personnalisés, consultez plutôt NSIS un système d'installation scriptable.

Jouer c'est amusant, j'espère que mes infos ont aidé.

0
LokizFenrir

Juste une petite amélioration à la solution de leoj3n (pour faire disparaître la fenêtre de la console): au lieu de mettre %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat" à la Cible: Dans le champ correspondant à votre raccourci Windows, vous pouvez également essayer d’ajouter uniquement les éléments suivants: %windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat" AND puis en ajoutant également start devant vos commandes dans run.bat. Cela fera disparaître la fenêtre de la console, mais tout le reste restera le même.

0

Vous pouvez demander au fichier de commandes de modifier le répertoire de travail actuel (CD).

0
Vincent De Smet

Le lien avec un chemin relatif peut être créé à l’aide de la ligne de commande mklink sur Windows.

mklink /d \MyDocs \Users\User1\Documents

C'est peut-être le meilleur moyen de créer un lien car, apparemment, le comportement du raccourci peut être différent, peut-être en fonction de la manière dont il est créé (commande UI vs mklink). J'ai observé un comportement étrange avec le comportement des raccourcis lorsque je change de dossier racine.

  • Il y a un comportement étrange sur Windows 7 que j'ai testé. Parfois, le lien fonctionne toujours lorsque le dossier racine de la cible est modifié (les propriétés du raccourci sont automatiquement mises à jour pour refléter le chemin modifié!). Le champ "Démarrer dans" est mis à jour automatiquement s'il y était.
  • J'ai également remarqué qu'un lien ne fonctionnait pas la première fois que je changeais le chemin racine (propriétés montre old) mais qu'il fonctionnait après le deuxième et à chaque fois par la suite. Les propriétés du lien sont mises à jour à la suite de la première exécution!
  • J'ai aussi remarqué au moins pour deux liens, il ne met pas à jour le chemin et ne fonctionne plus.
  • À partir des propriétés du lien, il n’ya aucune différence de format entre les champs mais le comportement est différent.
0
zar