web-dev-qa-db-ja.com

Windowsショートカットをフォルダーの場所に関連して開始しますか?

このファイル構造を使用するゲームがあります:

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

GAME FOLDERにrun.batへのショートカットを配置したいのですが、移動したり、他の誰かがインストールした場合、ターゲットが間違っているため機能しません。 GAME FOLDERを基準にしてターゲットを「開始」する方法はありますか?

59
William
  1. / bat /フォルダを右クリックして、ショートカットの作成をクリックします。

    • Windows 7では、現在のディレクトリでbat - Shortcutを取得します。
    • Windowsでは、XPが表示されますShortcut to bat
  2. 作成したショートカットを右クリックして、Propertiesをクリックします。

  3. Target(Windows 7のShortcutタブの下)を次のように変更します。

    %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
    
  4. Start inが空白であることを確認してください。これにより、現在のディレクトリで起動します。

  5. OKをクリックします。 Windows 7では、ショートカットアイコンはcmd.exeアイコンに変わります。
  6. .batへのショートカットの場合はおそらく受け入れられますが、アイコンを変更する場合は、ショートカットのプロパティを再度開き、アイコンの変更...(もう一度、 Windows 7のショートカットタブ)。この時点で、Browse ...アイコンを検索したり、次のように入力してデフォルトのシステムアイコンのリストを表示したりできます。

    %SystemRoot%\system32\Shell32.dll
    

    Browse...ボタンの左側にあり、押す Enter。これはWindows 7およびWindows XPで機能しますが、スタイルの更新によりアイコンが異なります(ただし、認識できるほど類似しています)。ショートカットが存在するWindowsのバージョンによっては、アイコン 意志 時々 それに応じて変更します。

詳細:

最初のTargetコマンドの先頭にある空の二重引用符をよりよく理解するには、 開始プログラムに渡されるパラメーターで「start」コマンドを使用 を参照してください。

66
leoj

マイクロソフトによると、'Start In'ボックスが空の場合、スクリプトは現在の作業ディレクトリで実行されます。私はこれをWindows 7で試しましたが、うまくいくようです。

ソース: http://support.Microsoft.com/kb/283065

33
Bob Pollack

Relative (Windowsコマンドラインアプリケーション)を使用してみてください。

基本的に、ショートカットには相対リンクを設定できますが、Windowsには実際にリンクを作成する方法がありません。

7
TimDC

システム変数(%MyGameFolder%など)を設定できる場合は、パスとショートカットでそれを使用できます。Windowsは残りのパスを埋めます(つまり、%MyGameFolder%\data\MyGame.exe)。

これは小さな入門書です 。バッチファイルを介してこの値を設定するか、ショートカットの作成方法を共有する場合はおそらくプログラムで設定できます。

4
SqlRyan

ファイルパスを変更することにより、相対ショートカットを手動で作成できます。最初に、通常のコンテキストメニューで、ファイルのWindowsの新しいショートカットを作成し、プロパティ->ファイルの場所で作成します。

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

3
Charles P.

leoj3nのソリューション が好きです。また、 start の/ Dパラメータを使用して必要な相対的な「開始」ディレクトリの設定にも使用できます。 cmd の引数として/ cまたは/ kを入力しないと、後続の開始コマンドは実行されません。/cは、コマンドを実行した直後にシェルを閉じ、/ kは(コマンドが実行された後でも)シェルを開いたままにします。したがって、実行しているものが何であれ標準出力にスピットし、それを確認する必要がある場合は、/ kを使用します。

残念ながら、lnkファイル 仕様 によると、アイコンはショートカットに保存されず、「環境変数を使用してエンコードされます。これにより、場所は異なるが表現されているマシン間でアイコンを見つけることができます」環境変数を使用します。」そのため、パスが変更されており、ポイントしている実行可能ファイルからアイコンを取得しようとしている場合、正しく転送されない可能性があります。

3
darda

ショートカットを作成した後、プロパティで次を設定します。

ターゲット:%comspec% /k "data\run.bat"

  • 落とす /k実行後にプロンプ​​トを開いたままにしたくない場合。

で開始: %cd%\data

1
John Thow

いくつかの答えを読んだ後、私は簡単な解決策でそれを行うことにしました:ショートカットの代わりに、メインの.batを呼び出す1行だけで.batを作成しました。

1
Alexis B.

私が正しいか、または何かが欠けているかどうかはわかりませんが、今のところ(2016-07-11、Win7 Enterprise SP1を実行しています)新しい場所で走る! USBドライブに新しいショートカットを作成し、ショートカットとそのターゲットを移動して、相対位置が変わらないようにしてから、ドライブ文字を変更しました。どちらの場合もショートカットが機能し、ダブルクリックするとターゲットフィールドが適応されました。

Microsoftは過去のアップデートの1つでこの問題に対処しているようです。

誰かこれを確認してください。

1
Mehrdad Mirreza

最も簡単な解決策:> 環境変数 便利な小さな生き物。

他の人がそれぞれのシステムドライブ(通常はc :)のどこにでもインストール/解凍する場合。

デモンストレーションの目的で、アプリ「test.exe」(実行可能ファイル/ファイルはexeである必要はありません)を呼び出し、フォルダMYCOMPANY\MYAPP \にインストール/解凍します

次に、%SystemDrive%\ MYCOMPANY\MYAPP\test.exeをターゲットとして使用し、%SystemDrive%\ MYCOMPANY\MYAPP \を開始として使用するショートカットを作成します。

それで、あなたはそれを展開したいと思います。 「WinRAR」などのアプリを使用します。

簡単な方法は、「。exe」としてきちんとパッケージ化された自己解凍Zipファイルを使用することです。ショートカットに1つ、アプリに1つを使用します。さまざまなファイルをさまざまなディレクトリに抽出する1つの自己解凍型Zipファイルを作成する方法がありますが、まだ使用していません。

もう1つの方法は、ショートカットの自己解凍を作成し、アプリの自己解凍に埋め込み、ファイルの保存場所を知っている場合に1回実行スクリプトを適用することです。等.

インストーラーがカスタムインストール/解凍ディレクトリを使用できるようにする場合は、むしろ [〜#〜] nsis [〜#〜] スクリプト可能なインストールシステムをご覧ください。

楽しく遊んで、私の情報が役に立てば幸いです。

0
LokizFenrir

Leoj3nのソリューションに対するわずかな改善(コンソールウィンドウを非表示にするため):%windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"を ターゲット: Windowsショートカットのフィールドでは、次を追加することもできます:%windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat" AND run.batのコマンドの前にstartを追加するこれにより、コンソールウィンドウが消えますが、他のすべては同じままです。

バッチファイルで現在の作業ディレクトリ(CD)を変更することができます。

0
Vincent De Smet

相対パスのリンクは、Windowsのコマンドラインで mklink コマンドを使用して作成できます。

mklink /d \MyDocs \Users\User1\Documents

これは、明らかに、ショートカットの動作が作成方法(UI vs mklinkコマンド)に基づいて異なる可能性があるため、リンクを作成する最良の方法かもしれません。ルートフォルダーを変更すると、ショートカットがどのように動作するかという奇妙な動作を観察しました。

  • 私がテストしたWindows 7には奇妙な動作があります。ターゲットのルートフォルダーが変更されても、リンクが機能することがあります(ショートカットプロパティは、変更されたパスを反映して自動的に更新されます!)。 「開始」フィールドがあれば、自動的に更新されます。
  • また、ルートパスを初めて変更したときに1つのリンクが機能しないことに気付きました(プロパティは古いものを示しています)が、2回目以降は常に機能します。リンクプロパティは、最初の実行の結果として更新されます!
  • また、少なくとも2つのリンクについては気づきました。パスが更新されず、機能しなくなりました。
  • リンクプロパティからは、フィールドの形式に違いはありませんが、動作は異なります。
0
zar