Windows 10でシンボリックリンクを作成するにはどうすればいいですか?

symbolic-link windows-10

http://www.dropboxwiki.com/tips-and-tricks/sync-game-saves-across-multiple-computersを読んでいて、junction/mklinkはWindows 7でも動いていたのは知っていたのですが、どうやらWindows 10ではjunctionコマンドが引退してしまったようです

Windows10でシンボリックリンクを作る正しい方法とは?

  119  red  2016-01-02


ベストアンサー

Windows10ではジャンクションコマンドが引退したようです

Windows SysInternals(マイクロソフトの一部)からjunctionをダウンロードすることができます

Junction を使用すると、NTFS ジャンクションを作成できるだけでなく、ファイルやディレクトリが実際にリパースポイントであるかどうかを確認することができます。リパースポイントは、NTFS ジャンクションがベースになっているメカニズムで、Windows のリモートストレージサービス (RSS) やボリュームマウントポイントで使用されています

ジャンクションを使用する際のヒントは、このMicrosoft KBの記事をお読みください

Windows は、リモート共有上のディレクトリへの接続をサポートしていないことに注意してください


では、Windows 10でジャンクションやディレクトリのシンボリックリンクを作成するにはどうすればいいのでしょうか?

上記の指示に従って、junctionをダウンロードしてください

これで以下のコマンドが使えるようになりました

ジャンクションを作ります

junction "C:\Documents and Settings\UserName\My Documents\My Dropbox\My Games" "C:\Documents and Settings\UserName\My Documents\My Games"

ディレクトリシンボリックリンクを作成します

mklink /D "C:\Documents and Settings\UserName\My Documents\My Dropbox\My Games" "C:\Documents and Settings\UserName\My Documents\My Games"

Windows 10ではmklink /jjunctionのどちらかを使用して接合部を作成することができます

Windows 10ではmklink /dを使ってディレクトリシンボリックリンクを作成することができます

Notes:

  • junctionは、mklinkとは異なり、ジャンクションをリストアップしてファイルがジャンクションかどうかを判断することもできます

  • mklinkcmdシェル内でのみ利用可能な内部コマンドです

  • デフォルトでは、シンボリックリンクを作成するには管理者権限が必要です

    他のユーザーにも付与することができます。セキュリティ設定「シンボリックリンクを作成する」で付与することができます

      Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\
    

Examples

mklinkを使用してディレクトリシンボリックリンクを作成します

F:\test>mklink /d test-dir-sym-link test
symbolic link created for test-dir-sym-link <<===>> test

mklinkを使ってジャンクションを作成します

F:\test>mklink /j test-junction test
Junction created for test-junction <<===>> test

ジャンクションを使ってジャンクションを作る

F:\test>C:\apps\NirSoft\SysinternalsSuite\junction.exe test-junction test

Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

Created: F:\test\test-junction
Targetted at: F:\test\test

Further Reading

134  DavidPostill  2016-01-02


権限のある管理者としてPowerShellセッションを開き、次のように入力します

New-Item -ItemType SymbolicLink -Path E:\Data\MyGames -Target "C:\users\UserName\MyGames"

冗長性の低い構文を使用することもできます

ni E:\Data\MyGames -i SymbolicLink -ta "C:\users\UserName\MyGames"

確かに2016年とWindows10ではcmdコマンドや外部ダウンロードをいじくりまわしたくないですよね

Windows 10 は PowerShell 5 を搭載しており、シンボリックリンクの作成をビルトインでサポートしています

57  Peter Hahndorf  2016-07-30


シンボリックリンクを作成/編集するためのGUIツールが必要な場合は、http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.htmlを使用してください

リンクシェル拡張(LSE)は、ハードリンク、ジャンクション、ボリュームマウントポイント、Windows7/8のシンボリックリンク(ここでは総称してリンクと呼ぶ)の作成を提供します。LSEはその名の通り、シェル拡張機能として実装されており、Windowsエクスプローラや類似のファイル/フォルダマネージャからアクセスします。この拡張機能により、ユーザーは、1つまたは複数のファイルやフォルダを選択し、マウスを使って、必要なリンク(ハードリンク、ジャンクション、シンボリックリンク)を作成したり、フォルダの場合はハードリンクやシンボリックリンクからなるクローンを作成したりすることができます。LSEは、Windows XP64、Windows7/8/10を含む、NTFSバージョン5.0以降をサポートするすべてのWindowsでサポートされています。ハードリンク、ジャンクション、シンボリックリンクはFATファイルシステムではサポートされておらず、クローン作成とスマートコピープロセスもFATファイルシステムではサポートされていません

enter image description here

19  odvpbre  2016-10-24


Windows 10のビルド14972(2016年12月)以上をお持ちの場合

Symlinks in Windows 10!
Overview Symlinks, or symbolic links, are “virtual” files or folders which reference a physical file or folder located elsewhere, and are an important feature b...

で開発者モードを有効にすることができます

301 Moved Permanently

の場合は、adminなしでmklinkを使用します。あるいは、PowerShell 6.2.0 (2019年3月) 以降では、管理者なしで Symlink を使用することができます

New-Item -ItemType SymbolicLink -Path new.txt -Target old.txt

0  Steven Penny  2020-07-01


何もインストールする必要はありません!

シンプルでオープンソースのsymlink_creator.batファイルが存在します

  • そのファイルにドラッグ&ドロップします

  • これはオープンソースの(説明書を参照)なので、ファイルの右クリック>Editをするだけで(数行だけ)その内容を自分で見ることができます。余分な .exe.dll ファイルをインストールする必要はありません

Batch File

::  ================================================================== ::
::  ========================  Puvox.Software  ======================== ::
::  ================================================================== ::
::  ============== Symlink Creator with Drag&Drop v1.3 =============== ::
::  This script makes a symlink of any files/folders  ( )
::  ================================================================== ::
::  ================================================================== ::

@echo off
setlocal enableextensions enabledelayedexpansion

if "%~1"=="" ( mshta "javascript:alert('You should drag desired files onto this');close();" && exit )

set /P inputed_target_dir= Path to folder, wherein the symlink will be created:
set inputed_target_dir=%inputed_target_dir%\
set type=0

for %%a in (%*) do  (

rem  in PARENTHESIS we use ! instead % for set-ed variables  (read more: https://superuser.com/a/78509/249349 )
set original_path=%%a
set original_path_quoted=!original_path!
rem  Make it quoted (if it's not already quoted)
set original_path_quoted|find """" >nul || set original_path_quoted="!original_path!"

set isDirectory=no
:: if directory
FOR %%i IN (!original_path_quoted!) DO IF EXIST %%~si\NUL (
set isDirectory=yes
for /D %%i in (!original_path_quoted!) do SET original_drive=%%~di
for /D %%i in (!original_path_quoted!) do SET original_dir=!original_drive!%%~pi
for /f "delims=" %%i in (!original_path_quoted!) do SET original_basename=%%~ni
)

:: if file
FOR %%i IN (!original_path_quoted!) DO IF NOT EXIST %%~si\NUL (
set isDirectory=no
for /f "delims=" %%i in (!original_path_quoted!) do SET original_drive=%%~di
for /f "delims=" %%i in (!original_path_quoted!) do SET original_dir=!original_drive!%%~pi
for /f "delims=" %%i in (!original_path_quoted!) do SET original_basenameWithExt=%%~nxi
)


for /D %%i in ("%inputed_target_dir%") do SET target_drive=%%~di
for /D %%i in ("%inputed_target_dir%") do SET target_dir=!target_drive!%%~pi

set isSameDrive=1
IF /I "!original_drive!"=="!target_drive!" (  set isSameDrive=2 )

:: if same ditectories, then use prefix name
set prefix=
IF /I "!original_dir!"=="!target_dir!" ( set prefix=_symlinked_ )

if !type! LSS 1 (
rem ::   If same drives, then allow user to choose HARD method. Otherwise, only SOFT can be used
set type=2

rem ::   DONT USE   "!isSameDrive!"=="yes"  comaprison, as it has issue
if /i !isSameDrive! GTR 2 ( set /P type= Seems source and Destinaton drives are same, so you have an opportunity to create HARD-SYMLINK [press 1], otherwise press ENTER and the default SOFT-SYMLINK will be created : )
)

:: if directory
if !isDirectory!==yes (
FOR %%i IN (!original_path_quoted!) DO IF EXIST %%~si\NUL (
IF "!type!"=="1" (
mklink /J "!target_dir!\!prefix!!original_basename!" !original_path_quoted!
) ELSE (
mklink /D "!target_dir!\!prefix!!original_basename!" !original_path_quoted!
)
)
)

:: if file
if !isDirectory!==no (
FOR %%i IN (!original_path_quoted!) DO IF NOT EXIST %%~si\NUL (
IF "!type!"=="1" (
mklink /H "!target_dir!\!prefix!!original_basenameWithExt!" !original_path_quoted!
) ELSE (
mklink "!target_dir!\!prefix!!original_basenameWithExt!" !original_path_quoted!
)
)
)


)
:: FOR loop


:: mshta "javascript:alert('error: creating Hard-Symlink for different drives has failed');close();"
mshta "javascript:alert('Finished');close();"
endlocal

0  T.Todua  2018-03-19


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