博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
示范NTFS 卷上的硬链接
阅读量:5010 次
发布时间:2019-06-12

本文共 2558 字,大约阅读时间需要 8 分钟。

' 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

你可能感兴趣的文章
scss常规用法
查看>>
css定位position属性深究
查看>>
android中不同版本兼容包的区别
查看>>
阿里云配置HTTPS
查看>>
web总结
查看>>
ZeroMQ接口函数之 :zmq_plain - 明文认证
查看>>
jQuery和js之Cookie实现
查看>>
接口相关测试点
查看>>
初始化日期为yyyy-MM-dd HH:mm:ss格式
查看>>
Codeforces Round #316 (Div. 2) C. Replacement(线段树)
查看>>
UI 中的 结构体 字符串的 初始化
查看>>
android之PackageManager简介
查看>>
sql查询删除重复数据
查看>>
checkstyle配置文件说明
查看>>
cmake编译opencv时指定cuda版本
查看>>
固态硬盘装系统/双系统
查看>>
Static 与 new 的问题【待解决】
查看>>
xml
查看>>
在 mvc4 WebApi 中 json 的 跨域访问
查看>>
敏捷开发文章读后感
查看>>