百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

好用的符号链接,利用mklink命令给C盘搬家

bigegpt 2024-08-05 11:45 8 浏览

初识符号链接

最近小编在鼓捣WebDAV的时候发现了一个Windiws上一个有趣又好用的东西:符号链接。Linux下的符号链接相信有不少小伙伴都比熟悉了,然而Windows上的符号链接就很少被提起了,像小编也是最近才知道。Windows系统上的符号链接全称为「NTFS符号链接」,是NTFS文件系统中指向文件系统中的另一个对象的一类对象,被指向的对象叫做"目标"。

符号链接的设计目的是为了增强兼容性的,首次出现在Windows Vista,较晚的更新时间加之当时已经有「快捷方式」的存在,所以也不太为用户所知。符号链接简单来说原理就像快捷方式一样,只不过快捷方式只能在Windows资源管理器中才识别为目录或文件,在其他系统和程序看来只是一个.link文件,而符号链接在系统中同样不占用空间,但却能被其他文件系统和程序识别并进行修改,对代理的改动就和修改目标文件(源文件)一样。

简单了解原理之后,想必大家已经想到不少利用符号链接来实现的功能了吧?小编最开始就是因为微软自带的IIS管理器无法映射驱动根目录作为虚拟目录,在网上进行了一番冲浪才发现这样一个「骚操作」,将需要映射的盘全都在WebDAV共享文件夹中创建了符号链接,解决了现实需求。

符号链接的具体实现方法是用命令提示符CMD中的mklink命令实现的(管理员模式运行),PowerShell中要先敲cmd进入cmd之后再使用mklink命令。现在我来一步步教大家怎样使用mklink命令创建符号链接:首先在在菜单界面搜索「CMD」,右键以管理员身份运行,这样就以管理员身份启动CMD了。

在mklink的帮助界面可以看到实际上可以创建三种类型的符号链接,下面小编来简单解释一下不同符号链接类型之间的区别。

/d目录符号链接:常用类型,可以为目录或文件创建符号链接;

/j目录联结:常用类型,为目录创建符号链接,像Win10的「开始菜单」、「我的文档等」就是目录链接;

/h硬链接:链接对象只能为文件且不能跨卷。

一般来说/h硬链接因为不能跨卷建立所以使用的比较少,不过它的特性却很适合将文件进行备份和避免误操作,硬

链接本质就是创建一个「入口」,删除一个文件只相当于删除了这个文件的其中一个「入口」,只有将两个文件同时删除才会真正在硬盘上删除。

/d目录符号链接和/j目录联结虽然本质上有区别,但在实际使用中最大的不同就是,目录联结只支持文件夹且不支持网络远程地址的引用,其他使用上基本可以等同。

给C盘搬家

说了这么多还是来解决一下实际问题-咱们来帮C盘搬搬家。在windows下,大多数软件会默认安装在C盘,即使自定义安装路径把软件安装到其他盘,还是会有很多软件用到的数据文件被塞到C盘,虽然可以利用软件或者到注册表修改默认安装路径以及数据存储路径,然而操作比较繁琐还怕引起软件稳定性问题。

小编的C盘就划了100G的空间,虽然也不少了,而且平时也很注意不往C盘装软件,但是Win10系统自动在C盘设置了虚拟内存,加上各种默认安装路径的软件和缓存,C盘剩下的空间就非常有限了,这时候除了清理垃圾之外还可以通过符号链接把C盘的文件搬到其他盘。

比如我想把默认安装到C盘的potpalyer转移到D盘里,而不影响桌面的快捷方式和正常运行。首先我们先找到PotPlayer的安装文件夹C:\Program Files\DAUM,然后把整个DAUM文件夹剪切到D盘(如果担心数据丢失可以先复制备份),此时C:\Program Files里就没有DAUM文件夹了(很重要)。

接着打开CMD开始输入符号链接命令:mklink /d "C:\Program Files\DAUM" "D:\Program Files\DAUM"(利用mklink /

j命令创建目录联结效果一样),然后回车,显示为C:\Program Files\DAUM <<===>> D:\Program Files\DAUM 创建的符号链接,这样就成功在C盘Program Files目录下创建了一个名为「DAUM」的符号链接了。

现在我们再打开C:\Program Files文件夹就能看到出现了一个带快捷方式符号的DAUM文件夹,不过不用担心这是一个符号链接而不是快捷方式,PotPlyer播放器仍然能正常的通过桌面快捷方式打开和使用,通过视频文件对播放器的调用也没有受到影响。打开文件夹的属性面板也可以看到DAUM此时是一个符号链接。

眼尖的小伙伴可能已经看到了,除了PotPlyer之外小编还利用符号链接把Adobe的默认安装文件夹也搬到D盘去了,这下又节省了6G的C盘空间,其他软件也同理。除了帮软件搬家之外,其他像一些默认在C盘的缓存文件夹,甚至是一些分国内、国际服的游戏都可以通过符号链接整合到一起,达到瘦身的目的,这就属于比较骚的操作了,我们以后可以单独来讲。


LinkShellExtension

毕竟使用mklink命令来建立符号链接需要自己手动敲,对不太熟悉命令提示符的小伙伴来说还是挺麻烦的,光是搞明白建立链接地址和目标路径命令的顺序可能就要死掉不少脑细胞,用批处理文件也不是太方便。于是小编又冲浪了一会,终于发现了一款能简单快速建立符号链接的软件:LinkShellExtension。

大家只需要在百度上搜索这款软件的名字,第一个就是它的官网了,点击Download就能下载,下载好之后语言选择中文接着就安装完成了。安装完成之后,LinkShellExtension的所有功能就集成在了右键菜单里。如果想为某个文件或者文件夹建立符号链接,只需要再资源管理器中选中目标右键「选择源连接点」,然后再打开到想要建立符号链接的位置,再空白处右击「创建为」>>「符号链接」,就成功在相应位置建立符号链接了。目录联结和硬链接的创建的操作方法也相同。

评论区的小伙伴还知道哪些符号链接的神奇用法呢?

(编辑:hnm)

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...