我正在阅读http://www.dropboxwiki.com/tips-and-tricks/sync-game-saves-across-multiple-computers,我知道junction / mklink也可以在Windows 7中使用,但是看起来像junction Windows 10中已弃用该命令。

在Windows 10中进行符号链接的正确方法是什么?

评论

mklink怎么了?

任何人都了解(公司)漫游配置文件中的结点的好坏信息? (即)潜伏...

链接已断开(有效):“非官方Dropbox Wiki不再可用。”

#1 楼

Windows 10中似乎已不再使用结点命令。
您可以从Windows SysInternals(它是Microsoft的一部分)下载结点:

结点不仅允许您创建NTFS结点,它使您可以查看文件或目录是否实际上是重新解析点。重新解析点是NTFS联结所基于的机制,Windows的远程存储服务(RSS)以及卷安装点都使用它们。
请阅读此Microsoft KB文章,以获取有关使用联结的提示。 br />请注意,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创建目录符号链接。
注意:


junction也可以列出连接并确定文件是否是与mklink不同的结点。


mklink是仅在cmd shell中可用的内部命令。


通过defa创建符号链接需要具有管理员权限。
还可以将其授予其他用户。可以在以下位置授予安全设置“创建符号链接”:
  Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\




示例
使用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


进一步阅读


Windows CMD命令行的AZ索引-与Windows cmd线相关的所有事物的极佳参考。

mklink-创建指向目录或文件的符号链接,或者创建硬文件链接或目录连接。


评论


这与mklink / j不同吗?

–尊诺
16年1月2日在15:51

据我所知,@Jonno创建联结时是相同的。联结还将列出与mklink不同的联结

–DavidPostill♦
16年1月4日在9:31

据我所知,您不能在PowerShell中使用mklink,因此必须使用cmd.exe。另外,您必须以管理员身份运行它。但是不要相信我。我仅使用Windows计算机约40个小时。

–布鲁诺·布鲁诺斯基(Bruno Bronosky)
16年1月5日,18:52



@BrunoBronosky正确。这是因为mklink是仅在cmd shell中可用的内部命令。请注意,某些cmd内部命令已在PowerShell中实现,例如dir。

–DavidPostill♦
16年5月5日在19:12

@DavidPostill进行了改进,但仍然将重点放在接合点上,需要单独下载。 mklink似乎可以更好地作为主要焦点,最后将联结点作为退休的额外选择。

– WBT
18/12/26在15:01

#2 楼

以提升的管理员身份打开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年和Windows 10中,您不想摆弄cmd命令或外部下载。

Windows 10附带了PowerShell 5,它内置了对创建符号链接的支持。

评论


当然,在2016年,我不必非要创建符号链接! Windows最大的失败之一。

– David Arno
16 Dec 2'在20:30

你在开玩笑吧?我宁愿做“ mklink / d test-dir-sym-link test”,也不愿做“ New-Item -ItemType SymbolicLink -Path E:\ Data \ MyGames -Target“ C:\ users \ UserName \ MyGames”。 -verbose PowerShell语法并不是我真正喜欢的...

–Jaime de los Hoyos M.
16年12月13日在12:00

@JaimedelosHoyosM-使用较短的PowerShell语法,可以使用ni test-dir-sym-link -i SymbolicLink -ta test

– Peter Hahndorf
17年5月6日在10:29

有没有办法在没有管理员权限的情况下从PowerShell创建SymbolicLink?

– cjsimon
18年6月12日在23:38

@scape-您可以使用参数名称的前几个字母来唯一标识参数,例如-i对于-ItemType就足够了,但-t还不够,因为有多个以t开头的参数,所以我们需要使用-ta

– Peter Hahndorf
19年1月24日在16:46

#3 楼

如果您想使用GUI工具进行符号链接的制作/编辑,请使用
http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

链接外壳扩展程序(LSE)为创建Hardlinks,Junctions,Volume Mountpoints和Windows7 / 8的Symbolic Links(以下统称为Links)的文件夹克隆过程利用Hardlinks或Symbolic Links进行复制,并执行复制过程来处理Junctions,Symbolic Links和Hardlinks。顾名思义,LSE被实现为Shell扩展,可以从Windows资源管理器或类似的文件/文件夹管理器进行访问。该扩展名允许用户选择一个或多个文件或文件夹,然后使用鼠标来完成所需链接的创建-硬链接,连接或符号链接,或者在文件夹的情况下,创建由硬链接或符号链接组成的克隆。所有支持NTFS 5.0或更高版本的Windows版本(包括Windows XP64和Windows7 / 8/10)都支持LSE。 FAT文件系统不支持硬链接,连接点和符号链接,FAT文件系统也不支持克隆和智能复制过程。



评论


请阅读“我如何推荐软件”以获取有关如何推荐软件的一些提示。您应该至少提供一个链接,有关该软件本身的一些其他信息,以及如何使用它来解决问题。

–DavidPostill♦
16-10-24在15:59

这是一个很好的工具,但是答案中的一些更多信息将是很好的。

–DavidPostill♦
16-10-24在16:00

#4 楼

如果您具有Windows 10 build 14972(2016年12月)或更高版本:
https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10
您可以启用开发人员模式:
https://howtogeek.com/292914/what-is-developer-mode-in-windows-10
,然后在没有管理员的情况下使用mklink。或者,PowerShell 6.2.0(2019年3月)或更高版本允许在没有管理员的情况下使用Symlink:
New-Item -ItemType SymbolicLink -Path new.txt -Target old.txt


#5 楼


没有任何安装!
有一个简单的开源symlink_creator.bat文件。


将所需的文件/文件夹拖放到该文件上。 />

它是开源的(请参阅说明),因此,只需右键单击>在文件上编辑即可自己查看其内容(仅几行)。无需安装其他.exe.dll文件。

::  ================================================================== ::
::  ========================  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


评论


您应该在答案中添加此批处理文件的工作原理以及与之的关联。批处理文件可能具有很大的破坏性,并且从互联网上随机运行批处理文件违反了常识。

–凯尔·阿普林(Kyle Applin)
18 Mar 19 '18 at 13:45

上面的答案已经有一个主持人对此发表评论。我主要关注您的答案,因为您链接的网站看起来有些粗略,并且您的答案的格式为我触发了一些危险信号。我真的只是偏执。

–凯尔·阿普林(Kyle Applin)
18 Mar 19 '18 at 14:58



不幸的是,它以错误“语法不正确”结束

–tutejszy
19/09/17在11:25

@ T.Todua ....我也进行了编辑,以添加批处理文件的实际内容,以防万一链接再次中断,逻辑本身可用。

–喝一些皮条客果汁IT
20 Mar 3 '20 at 12:04

您可以直接从CMD运行Javascript,而无需使用电子,Node或对Native好奇吗?

–瑞安·斯通(Ryan Stone)
20-10-13在7:15