![在 Win7 下使用 Junction 将文件夹移动到另一个驱动器](https://linux22.com/image/1299614/%E5%9C%A8%20Win7%20%E4%B8%8B%E4%BD%BF%E7%94%A8%20Junction%20%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我计划在笔记本电脑上安装一个 msata SSD 驱动器来保存窗口和程序,同时将数据文件、用户目录等保存在旧 HD 上。
如果我可以继续以 c:\whatever 的形式引用数据文件,那么会更容易,即使它们的物理位置是 d:\whatever。
如果我理解正确的话,最好的方法是创建一个连接点,例如
mklink /j d:\whatever c:\whatever
那么我是否只需使用 Windows 资源管理器或命令行中的其他工具将旧目录及其所有子目录移动到 d:\whatever 即可?或者会产生循环问题?
Windows7x64 Pro,如果这很重要的话。
答案1
我做了完全相同的事情,将大型数据文件从 C: 上的 SSD 移动到另一个硬盘上。
您需要先移动该文件夹。
然后,使用以下命令从原始位置到目标位置创建符号链接(或愿意时称为连接点,在这种情况下它们提供相同的功能):
mklink /D OriginalLocation DestinationLocation
创建/D
可跨卷的符号目录链接。(编辑:连接点也可能跨卷)
使用 Windows 资源管理器,您将在原始位置的文件夹上看到一个小的快捷方式图标。dir /a
在父目录中使用 将显示<SYMLINKD>
在 的位置<DIR>
。
答案2
我使用的步骤如下。我将Users
它移动ProgramData
到另一个驱动器。
1)启动系统磁盘,访问命令提示符,找到旧C:\
驱动器,并记下目标驱动器号
robocopy /copyall /e /xj Users <CURRENT_LETTER_OF_DESTINATION_DRIVE>:\Users
robocopy /copyall /e /xj ProgramData <CURRENT_LETTER_OF_DESTINATION_DRIVE>:\ProgramData
Rename Users Old_Users
Rename ProgramData Old_ProgramData
cd Old_Users
attrib desktop.ini -S -H
Rename desktop.ini desktop.ini.old
这会将您的用户文件夹的副本保留为“Old_Users”。我将其移至其他地方作为备份。如果您不更改该.ini
文件,以后可能无法区分这两个文件夹!
(可选rmdir /s /q Users
)rmdir /s /q ProgramData
如果您正在清理空间。
2)然后
mklink /J Users <USUAL_LETTER_OF_DESTINATION_DRIVE>:\Users
mklink /J ProgramData <USUAL_LETTER_OF_DESTINATION_DRIVE>:\ProgramData
rmdir "Documents and Settings"
mklink /J "Documents and Settings" "<USUAL_LETTER_OF_DESTINATION_DRIVE>:\Documents and settings"
现在,当您重新启动 Windows 时,一切都应该正常。
如果您犯了一个错误,则最终可能会得到一个损坏的用户配置文件。在这种情况下,请进入安全模式(或另一个用户)并打开regedit
。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
您的旧用户配置文件可能在列表中,带有.bak
扩展名,而新的虚拟配置文件则取而代之。删除虚拟配置文件并重命名.bak
不带“bak”的密钥。
然后,您可能会遇到几个安全错误。我还必须执行以下操作:
icacls "%programdata%\Microsoft\Internet Explorer\Quick Launch" /SetIntegritylevel (OI)(CI)Medium
icacls "%userprofile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch" /SetIntegritylevel (OI)(CI)Medium
icacls "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu" /SetIntegritylevel (OI)(CI)Medium
我的文件的所有权也发生了某种变化,我需要使用“获取所有权”或“属性/安全/高级/所有者/编辑/替换子容器上的所有者”才能使一切正常运行。
答案3
房屋建筑经理可以使用 Alt+F6 创建符号链接,链接的文件夹也会被标记,<link>
这样更容易被发现。不知道 Windows 7 的情况,但在以前的 Windows 版本中,使用资源管理器删除符号链接的文件夹会导致灾难性的后果,例如删除实际的目标文件夹。
要为文件(而不是文件夹)添加别名,您可以使用:fsutil hardlink create <new filename> <existing filename>
。
如果房屋建筑经理对你来说还不够好,那么你可以使用交界处Mark Russinovich 编写的命令行实用程序,例如:
junction d:\symlinked_folder c:\winnt
不,您实际上不能“使用连接点移动文件夹”,连接点只是客户端应用程序视为“真实文件夹”的另一个文件夹的别名。