2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Takumi Akashiro ひとりAdvent Calendar 2020

Day 7

ジャンクションについて

Last updated at Posted at 2020-12-06

この記事はTakumi Akashiro ひとり Advent Calendar 2020の7日目の記事です。

初心者向けにExtendScriptのことを書いてたら筆が止まって困ってるので、今週は更に小ネタ続きとなります。

始めに

  • あるディレクトリの一部分だけ、別のボリューム(SSDとか)に置きたい。
  • ファイルを保存するたびに管理者権限が必要で、UACで許可を出すのが面倒

読者のみなさまは、以上のような悩みを抱えたことはないでしょうか。
今日はこれを解決するかもしれないテクニックについて話します。

それはジャンクションです。

ジャンクションとは

とてもザックリ説明すると通常のファイルシステムであつかえるショートカットです。

あ、この説明、C言語の初心者向け解説で#include をおまじないと呼ぶぐらいに雑なので話半分で聞いてくださいね。

まあ見てもらえればわかると思います。

ジャンクションは以下で作成できます。

mklink /j <dst> <src> 

実践

試しに管理者権限が必要なProgramFilesの下からジャンクションを作ってみましょう。

D:\>if exist scripts (echo True) else (echo False)
False

D:\>if exist "scripts\Delete All Empty Layers.jsx" (echo True) else (echo False)
False

D:\>if exist "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts\Delete All Empty Layers.jsx" (echo True) else (echo False)
True

D:\>mklink /j scripts "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts"
D:\Scripts  <<===>> C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts のジャンクションが作成されました

D:\>if exist "scripts\Delete All Empty Layers.jsx" (echo True) else (echo False)
True

D:\>type nul > scripts/nanka.txt
アクセスが拒否されました。

ハイ出来ましたね!
いやいや、最後アクセス拒否されててダメじゃねーか!と思われている皆様もいると思います

そう、実はこれだけではだめなんです。
でも逆にProgramFiles側にジャンクションを張って権限のないフォルダをソースとして扱えば……!

管理者権限にて
C:\Windows\system32>robocopy "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts"  "D:\Scripts" /s /e
rem 中略

C:\Windows\system32>rename "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts"  "Scripts_bak"

C:\Windows\system32>mklink /j "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts" "D:\Scripts"
C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts <<===>> D:\Scripts のジャンクションが作成されました
D:\>type nul > d:/scripts/foo.txt

D:\>if exist "scripts/foo.txt" (echo True) else (echo False)
True

D:\>if exist "C:\Program Files\Adobe\Adobe Photoshop 2021\Presets\Scripts\foo.txt" (echo True) else (echo False)
True

無事ファイルを作れてますね!

締め

ジャンクションを取り上げるにも関わらず、一つもFF8ネタを擦れなかった敗北感はありますが、まあいいです。
ジャンクションを 適切に つかおう!

参考

mklink | Microsoft Docs

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?