当你使用Windows的时候,你会发现无论哪个版本的Windows,系统都会默认将用户文件夹和程序数据文件夹(xp下是Documents and Settings文件夹,而windows7和vista下是users和programdata文件夹)存放在C盘之下,而且这些设置很不容易修改。这样的设置就会导致系统盘在用户使用的过程中越来越臃肿,系统运行速度越来越慢。相信使用Windows的大部分用户都有此体验。这篇随笔将把默认在C盘的users\用户名文件夹转移到其它分区。该文件夹不但存放着“我的文档”,“我的图片”等用户自己的文件,也包括用户自己的配置文件,IE的cookies,收藏夹以及上网过程中产生的临时文件。

在使用xp的时候,要完成这样的操作,一般需要再安装另外的软件来完成。幸好Windows 7 和 vista提供了mklink命令,让这样的操作变得非常简单。mklink是Windows 7 和 vista提供的创建符号链接和硬链接的一个命令。其实熟悉Linux系统的朋友都知道,linux系统下早就提供了类似的命令ln.

首先,先来介绍一下mklink这个命令。

    C:>mklink
    创建符号链接。
     
    MKLINK [[/D] | [/H] | [/J]] Link Target
     
    /D 创建目录符号链接。默认为文件符号链接。
    /H 创建硬链接,而不是符号链接。
    /J 创建目录联接。
    Link 指定新的符号链接名称。
    Target 指定新链接引用的路径 (相对或绝对)。

文件和目录都可以通过mklink命令来建立符号链接和硬链接。不过只有NTFS格式的硬盘才可以实现目录链接。所以建议大家尽量使用NTFS来格式化硬盘。当然在下面的过程中,也要求硬盘格式为NTFS。

符号链接创建后的图标和快捷方式的图标很像。不过符号链接不占用系统空间,在文件系统中不是一个单独的文件,而快捷方式在系统中是一个单独的文件,占用系统空间,虽然很小。两者相同的地方就是,如果源文件被删除了,两者就都没有用了;移除链接和快捷方式都不会影响源文件。除此之外,两个还有一个最大的不同,比如说我们通过mklink命令在C盘目录下创建一个D盘下的文件夹usersdata的符号链接users。如果usersdata文件夹下有一个admin的子目录,那么我们可以访问C:\users\admin路径。而如果我们创建的是一个usersdata的快捷方式users。那么我们点击C:\users文件夹时,路径会自动转到D:\userdata下;我们无法访问C:\users\admin路径,或者说C:\users\admin路径根本不存在。

硬链接在系统占用的空间和源文件相同,图标和快捷方式的突变不同,移除源文件或硬链接均不会对另一方产生影响,而硬链接文件的任何更改都会影响到源文件,而如果源文件被删除的话,它的内容依然通过硬链接的形式存在着。

好了,现在言归正传,怎么把users文件夹定位到其他盘呢?

假设你经常用的登录帐号帐号名为admin,那么首先我们要把这个目录转移到其他盘。

1. 在“计算机管理“中把Administrator用户激活,注销admin后,使用Administrator登录。之所以要用Administrator登录,是因为只有管理员用户才有权访问其他用户的用户资料文件夹,创建相应的符号链接。

我的电脑(右键)–>管理–>本地用户和组(在左边的选项栏里)–>用户–>右边窗口找到Administrator–>右键打开Administrator属性,找到下面的帐户禁用那里,把那个禁用的勾勾去掉,点击确定。

之后注销当前用户admin,记住一定要注销当前用户,不然admin文件夹下的一些配置文件仍然在被使用而导致接下来的复制和删除操作没法顺利完成。然后切换到Administrator用户登录windows。首次使用Administrator登录,系统会进行相关的配置。

2.把“C:\users\admin”整个目录复制到其它盘上,比如说D:\admin文件夹中。之后删除C盘users文件夹下的整个admin文件夹。如果想将其它文件夹转移到非系统盘中,同样的方法,复制然后删除。

3.使用mklink命令创建符号链接,重新登录系统。

首先Windows键+r调出运行对话框,输入cmd,也可以在开始中搜索cmd,然后打开。

输入如下命令来创建符号链接:

mklink /D C:\Users\admin D:\admin

注意,C:\Users文件夹下面的admin子目录应该提前删除掉,不然会出现该文件已经存在,无法创建符号链接的错误提示。这样之后,就可以注销Administrator,重新以admin用户登录系统了。

注意重新登录系统之后,要按照1中的步骤禁用Administrator用户。不然,可能会对系统安全带来隐患。

这样之后,在使用Windows系统的时候,C盘便不会臃肿得那么快了。而且,即使你重装了系统,也可以保证自己常用的配置不被改变,省去了很多重装系统后的配置工作。

如果你要重新安装系统的话,

在安装Windows 7操作系统的过程中,要求输入用户名及密码的时候,先不如输入任何信息,按“Shift+F10”呼出DOS窗口,输入以下命令:

rmdir “C:\Users\admin” /S /Q
mklink /J “C:\Users\admin” “D:\admin”

而后关闭DOS窗口,按部就班继续安装直至完成。

如此安装的Windows 7操作系统,所有“用户特殊文件夹”(User Special Folder)的内容都已经被设置在D盘(非系统盘)上。那么安装完系统之后,你会发现,你所有的配置几乎都能保留下来。当然在平时使用的过程中,软件尽量不要安装在C盘。

如果要把C盘下的ProgramData文件夹转移到其它非系统盘的话,因为该文件夹下文件属性的特殊性,直接复制删除的话,在删除的时候会出现“You require permission from SYSTEM to make changes to this file”类似的错误。这样的话可以通过修改该文件夹下的属性来解决这个错误。步骤如下:

1. 右键单击,选择属性。如下图所示,选择安全选项卡,单击高级,然后在新出现的对话框中选择所有者选项卡,单击编辑,选择你使用的用户,并且勾选”check the Replace owner on subcontainers and objects”,接下来单击应用。一路点击确定按钮就可以了。

2. 重新打开属性。同样进入安全选项卡里的高级设置。在接下来出现的对话框中选择权限(permissions)选项卡,选择改变权限(change permissions)按钮。之后会出现一个新的对话框,在该对话框底部有两个供勾选的选项。第一个选项“Include inheritable permissions from this object's parent”,取消该选项,取消的时候会出现一个警告对话框,这个警告对话框给出三个选项add, remove, ignore,这时选择添加add就行了。第二个选项“Replace all child object permissions with inheritable permissions from this object”,勾选该选项即可。然后确定退出。

如果操作成功的话,就可对programdata文件夹进行删除了。

如果programdata文件夹的权限修改的过程中,出现了无法修改的文件,比如说cache文件,那么只能通过启动模式中的“Repair your computer”修复计算机模式来进行。在开机的过程中按F8,之后选择Repair your computer/修复计算机”模式来启动计算机,之后调出终端命令行cmd,再进行拷贝删除建立符号链接就可以了。命令运行如下:

robocopy C:\ProgramData\ D:\ProgramData\ /E /COPYALL /XJ
rmdir C:\ProgramData /S /Q
mklink /J C:\ProgramData\ D:\ProgramData\

即可。当然也可以将以上命令写入批处理文件.bat,然后在修复模式下,直接运行该批处理文件即可。这里建议使用后一种方法,因为这种方法相对来说比较简单,容易操作。当然,也可以使用Windows7安装光盘进入恢复模式来进行操作。

至此,C盘中相关系统文件夹的转移工作已经完成。


转载请注明出处:博客园 永不止步

原文地址:http://www.cnblogs.com/ResearchRecord/

[转]Windows7文件夹转移清理臃肿的C盘的更多相关文章

  1. xp下删除windows7,无法删除windows7文件夹,无法删除windows7文件,双系统卸载,取得文件权限

    http://blog.csdn.net/lanmanck/article/details/5722050 ---------------------------------------------- ...

  2. windows7文件夹怎样默认图片大图显示?

    先打开一个含有图片的文件夹,在文件夹空白处右键选择属性,打开自定义选项卡. 确定自定义选项卡 显示的是:“优化此文件夹:图片”. 然后,选择:组织--文件夹和搜索选项--查看--文件夹视图,应用到文件 ...

  3. MFC对文件文件夹转移、删除、重命名、复制【转】

    HFileOperation()函数主要对文件夹有四种操作:复制,删除,移动,重命名. 写了四个函数.可以很好的对文件夹进行操作. //函数名:MoveFolder //参数:lpszFromPath ...

  4. appdata文件夹有什么用途?C盘appdata可以删除吗?

    在内存紧张的时候,我们都会选择删除一些无关紧要的大文件来释放内存,有不少网友发现在系统C盘下有一个appdata文件夹,而且体积挺大的,不知道能不能删除,针对此问题,本文就为大家介绍appdata文件 ...

  5. 【转】转移Package Cache文件夹,转移Windows Installer文件夹

    详见http://blogs.msdn.com/b/heaths/archive/2014/02/11/how-to-relocate-the-package-cache.aspx (注意:若Wind ...

  6. 改变 Windows 用户文件夹默认位置

    https://social.microsoft.com/Forums/zh-CN/b6602d50-1a75-42d2-90bd-3dc6c2c82147/programdata?forum=win ...

  7. mklink命令转移win7系统盘文件夹users和programdata(附xp的方法)

    mklink命令转移win7系统盘文件夹users和programdata(附xp的方法)                   使用mklink命令转移文件夹清理臃肿的c盘        (一) 我的 ...

  8. mysql更改数据文件夹步骤与错误(ERROR 2002 (HY000))处理方法

    1,关闭mysql服务: service mysqld stop 2,创建新建的文件夹 mkdir -p data 3,把曾经的文件夹转移到新的数据文件夹 mv /var/lib/mysql/ /da ...

  9. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

随机推荐

  1. MySql简易配置

    选择standard configuration ,然后next Service Name :服务名字 Launch the MySQL Server automatically:是否开机启动mysq ...

  2. EXTJS中grid的数据特殊显示,不同窗口的数据传递

    //EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { v ...

  3. IP变化,SVN和数据库的修改

    最近公司换了运营商,将启用新的IP地址,将以前项目的端口映射处理好之外,还需要切换SVN的地址. 项目开发中有可能要修改SVN的IP地址,entries文件里面包含svn服务器的地址信息.每个文件夹都 ...

  4. 奇怪的bug(ant-design)

    ant-motion模板代码启动报错. 多了一层 import 会导致 less 编译的顺序发生变化,很奇怪的问题,还需要再深入看看.目前 ant-d.less 可以先改成这样来解决: + @impo ...

  5. (转)winform(C#)里几种弹出对话框

    //消息框中需要显示哪些按钮,此处显示“确定”和“取消” MessageBoxButtons messButton = MessageBoxButtons.OKCancel; //"确定要退 ...

  6. SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子

    使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...

  7. 8. UIViewController

    1. UIViewController 的认识 UIViewController在iOS开发中占据很重要的位置,iOS的整个UI开发的核心思想也是MVC的架构,从UIViewController的命名 ...

  8. C#之反射

    Assembly assembly = Assembly.Load("PeopleDal"); //获取程序集名称 Module[] modules = assembly.GetM ...

  9. 常用的HTML代码

    一.文字1.标题文字 <h#>..........</h#> #=1~6:h1为最大字,h6为最小字 2.字体变化 <font>..........</fon ...

  10. Mac 下locate命令使用问题WARNING: The locate database (/var/db/locate.database) does not exist.

    想在Mac下使用locate时,提醒数据库没创建: WARNING: The locate database (/var/db/locate.database) does not exist. To ...