' Hardlinks.vbs
' 示范 NTFS 卷上的硬链接
' --------------------------------------------------------

Option Explicit

' 一些常量
Const L_NoHardLinkCreated = "Unable to create hard link"
Const L_EnterTarget = "Enter the file name to hard-link to"
Const L_HardLinks = "Creating hard link"
Const L_EnterHardLink = "Name of the hard link you want to create"
Const L_CannotCreate = "Make sure that both files are on the same volume and the volume is NTFS"
Const L_NotExist = "Sorry, the file doesn't exist"
Const L_SameName = "Target file and hard link cannot have the same name"

' 确定要(硬)链接的现有文件
dim sTargetFile
if WScript.Arguments.Count >0 then
   sTargetFile = WScript.Arguments(0)
else
   sTargetFile = InputBox(L_EnterTarget, L_HardLinks, "")
   if sTargetFile = "" then WScript.Quit
end if

' 该文件存在吗?
dim fso
set fso = CreateObject("Scripting.FileSystemObject")  
if Not fso.FileExists(sTargetFile) then
   MsgBox L_NotExist
   WScript.Quit
end if

' 主循环
while true
   QueryForHardLink sTargetFile
wend

' 关闭
WScript.Quit

' /
' // Helper 函数

' 创建硬链接
'------------------------------------------------------------
function QueryForHardLink(sTargetFile)
   ' 如果在命令行上指定了硬链接名,则提取它
   dim sHardLinkName
   if WScript.Arguments.Count >1 then
      sHardLinkName = WScript.Arguments(1)
   else
      dim buf
      buf = L_EnterHardLink & " for" & vbCrLf & sTargetFile
      sHardLinkName = InputBox(buf, L_HardLinks, sTargetFile)
      if sHardLinkName = "" then WScript.Quit  
      if sHardLinkName = sTargetFile then
         MsgBox L_SameName
         exit function
      end if
   end if

' 验证两个文件均在同一个卷上,且
   ' 该卷是 NTFS
   if Not CanCreateHardLinks(sTargetFile, sHardLinkName) then
      MsgBox L_CannotCreate
      exit function
   end if
  
   ' 创建硬链接
   dim oHL
   set oHL = CreateObject("HardLink.Object.1")
   oHL.CreateNewHardLink sHardLinkName, sTargetFile
end function

' 验证两个文件均在同一个 NTFS 磁盘上
'------------------------------------------------------------
function CanCreateHardLinks(sTargetFile, sHardLinkName)
   CanCreateHardLinks = false
  
   dim fso
   set fso = CreateObject("Scripting.FileSystemObject")
  
   ' 同一个驱动器?
   dim d1, d2
   d1 = fso.GetDriveName(sTargetFile)
   d2 = fso.GetDriveName(sHardLinkName)
   if d1 <> d2 then exit function

' NTFS 驱动器?
   CanCreateHardLinks = IsNTFS(sTargetFile)
end function

' IsNTFS() — 验证文件的卷是否为 NTFS
' --------------------------------------------------------
function IsNTFS(sFileName)
   dim fso, drv
  
   IsNTFS = False
   set fso = CreateObject("Scripting.FileSystemObject")  
   set drv = fso.GetDrive(fso.GetDriveName(sFileName))
   set fso = Nothing
  
   if drv.FileSystem = "NTFS" then IsNTFS = True
end function

转载于:https://www.cnblogs.com/MaxWoods/archive/2006/05/09/395284.html

示范NTFS 卷上的硬链接相关推荐

  1. 示范NTFS 卷上的流

    ' CreateStream.vbs ' 示范 NTFS 卷上的流 ' -------------------------------------------------------- Option ...

  2. Linux上创建和更改硬链接和符号链接(软连接)

    Linux上创建和更改硬链接和符号链接(软连接) 对于Linux上的硬链接和软连接而言,使用cp命令,无论覆盖其中的那个文件(源文件,软连接文件,硬链接文件),其它文件的内容都会同步修改. 点击(此处 ...

  3. 符号链接和硬链接有什么区别?

    最近我在求职面试时被问到这个问题. 我是诚实的,并说我知道符号链接的行为以及如何创建一个,但不理解硬链接的使用以及它与符号链接的区别. #1楼 使用任何Linux(ish)控制台可能有所帮助的一些很好 ...

  4. Windows下mklink使用, 硬链接, 软链接和快捷方式的区别

    Windows下mklink使用,   硬链接, 软链接和快捷方式的区别 mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具.使用它需要管理员权限. ...

  5. Windows中的硬链接和软链接:

    硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让一个文件可以拥有多个访问路径. 如上图,左边为链接,右边为真正的文件.删除链接并不会删除源数据文件. 示例,为 ...

  6. 【Linux】Linux下的硬链接与符号链接

    Linux的初学者常常混淆Linux中的硬链接(hard link)与符号链接(symbol link)的概念,分不清楚它们的区别.因此,本文将向读者全面介绍硬链接与符号链接,给予读者以全面的认识. ...

  7. 为什么目录不支持硬链接?

    引言 在大概去年十二月中旬的时候刘裕基学弟问了我这个问题,很遗憾当时并没有给出一个令人信服的解释,实在是愧疚不已.在鸟哥那本书上给出的原因说实话是有些让人迷惑的,因为书在实验室,我依稀记着书上给出的原 ...

  8. 硬链接和软链接的区别

    原理上: 硬链接(hard link):文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件 ...

  9. linux 软连接、硬链接

    一.Linux链接概念 Linux链接分两种: 一种被称为硬链接(Hard Link)   一种被称为符号链接(Symbolic Link) 默认情况下,ln 命令产生硬链接.ln -s 命令产生软链 ...

最新文章

  1. laravel学习资料整理
  2. JUnit基础及第一个单元测试实例
  3. Sublime Text 2快捷键大全
  4. 计算二叉树叶子节点的数目
  5. Java并发编程实战————恢复中断
  6. Python批量重命名Maya场景中的3D物体
  7. 瑞幸被椰树“带坏”了?
  8. Fiddler设置断点(一)
  9. Java多线程详解(线程池)
  10. 连接mysql出现Access denied for user ‘root’@’localhost’ (using password:YES)问题解决办法...
  11. python做可视化_python可视化界面怎么做?
  12. matlab 实现同态滤波算法 并于直方均衡化相比较 看看谁的效果更好
  13. QTableView效率优化3 - 自定义Model的内容补充
  14. java健身房管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  15. Chrome内核浏览器离线加装扩展的方法 IE Tab_v11.2.1.1
  16. 七月观荷 - 江湖一剑客
  17. 清除流氓软件的第一利器(IceSword)
  18. python web微信应用(六) 监测微信撤回的消息
  19. poj 1163经典DP
  20. OpenCV每日函数 Subdiv2D类平面细分

热门文章

  1. 微信小程序开发之路(一)
  2. mysql-proxy完成mysql读写分离
  3. [文摘20080919]小软件将网页变为3D世界
  4. 所有特征在不同分类之间、 train和test之间的列分布差异(图形绘制)
  5. gensim在“中文查找(关键词)“与“txt文本“之间做相似度计算(返回最相似的文本)
  6. 深拷贝、浅拷贝以及引用传递和按值传递的区别与联系
  7. mammary cancer关联规则挖掘详解
  8. 字段定义_逐浪CMS对用户注册字段正则的自由定义(注册字段必填)
  9. springboot设置UTF-8
  10. JEPaas代码((列表,表单)确认入库按钮