こんにちは、ひつじ先輩です。
今回紹介するのは、シンボリックリンクの作り方とよくあるエラーです。
シンボリックリンクが張られた2つのフォルダの内容は同期され、片方で行った編集はもう片方にも反映されます。
シンボリックリンクを作る手順
まず、管理者権限でコマンドプロンプトを立ち上げます。
スタート→アクセサリ→コマンドプロンプト(右クリックから「管理者として実行」)
次にコマンドを打ちます。
mklink /d "フォルダA" "フォルダB"
「/d」は「フォルダ用のリンクを作る」という意味のオプションです。
あらかじめ、フォルダAという名前のフォルダがないことを確認します。
フォルダがある場合は削除してください。(理由は下で書きます)
フォルダA <<===>> フォルダB のシンボリック リンクが作成されました
と表示されたら完成です。
シンボリックリンク作成でつまずいたポイント
コマンドを打つだけなんですが、手こずりました。
①「既に存在するファイルを作成することはできません。」
mklink /d "フォルダA" "フォルダB"
のうち、フォルダAがすでに存在する場合、このエラーがでます。
このため、フォルダAという名前のフォルダはあらかじめ削除しておきます。
冒頭で書いたように、mklinkがフォルダAとフォルダBを同期するのなら、両方必要な気がします。
しかし実際には、mklinkはフォルダAという名前のリンクを作るコマンドです。
よって、すでにフォルダAという名前のフォルダがあるとエラーになります。
作成されたフォルダA(というリンク)はアクセスするとフォルダBの中身が表示されます。
自作コードからアクセスしても、フォルダA内のファイルCとして、フォルダB内のファイルCにアクセスできます。
一方、普通のフォルダBへのショートカットに、フォルダAという名前をつけたとします。
この場合は自作コードからフォルダAにアクセスしてもファイルCにはアクセスできません。
ここの部分が普通のショートカットとは違うところです。
②「コマンドの構文が誤っています。」
これには色々なまちがい方があります。
自分がやったのはこれです。
mklink \d “A” “B”
オプションのdの前のスラッシュ「/」がバックスラッシュ「\」になっています。
コマンドプロンプトでは「\」が「¥」と表示されるのですが、気づくのに時間がかかりました。
バックスラッシュでいいと思い込んでいたので、
「『\』が『¥』と表示されているなぁ」
などとのんきに思っていました。
③「この操作を実行するのに十分な特権がありません。」
管理者権限でコマンドプロンプトを立ち上げないとこうなります。
右クリックから「管理者として実行」してください。
普通に立ち上げたときと、管理者で立ち上げたときでカレントディレクトリが変わります。
相対パスでフォルダ名を指定している場合は注意してください。
(例)1つのEAで2つMT4を動かす
MT4のEAがアクセスできるのは、各MT4固有のデータフォルダだけです。
その外にあるファイルは読み書きできないため、別のMT4のEAと情報のやり取りはできません。
そこで、片方のデータフォルダを削除し、もう一方のデータフォルダへのシンボリックリンクに差し替えます。
すると、片方のMT4のEAが書き込みしたファイルを、もう片方のMT4のEAから読み込むことができます。
例えば、片方のEAから「買い 1ロット」などと書き込み、もう片方のEAで読み込めばオーダーを通せます。
つまり、1つのEAで2つのMT4を動かせることになります。
(指示を受ける側のMT4にもファイルを読み込み、指示通りの注文をするだけのEAは必要になります。)