「モンスター社員の教科書」を作りました!

シンボリックリンクでフォルダ同期のエラー3パターン

似ているので間違えそうになる etc
当サイトはアフィリエイト広告を利用しています

こんにちは、ひつじ先輩です。

今回紹介するのは、シンボリックリンクの作り方とよくあるエラーです。

 

シンボリックリンクが張られた2つのフォルダの内容は同期され、片方で行った編集はもう片方にも反映されます。

「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は必要になります。)

 

タイトルとURLをコピーしました