将符号链接转换为Windows中的硬链接

我想在Windows批处理脚本的目录中recursion地将软链接转换为硬链接。 我已经能够在Linux中做到这一点,但我不太确定如何在batch file中完成这项工作。 有人可以让我知道我应该做些什么来完成这个工作吗?

谢谢

我看到了两种将符号链接转换为硬链接的方法:

  • 使用NTFSLinksView实用程序。

    @echo off set listfile="%temp%\links%random%.html" start /wait ntfslinksview /shtml %listfile% /folder "." /subfolders for /f "delims=>< tokens=5,9" %%a in (' find ">Symbolic Link<" %listfile% ') do ( ren "%%a" "%%~nxa.bak" mklink /h "%%~fa" "%%b" && del "%%a.bak" || (ren "%%a.bak" "%%~nxa" & echo %%a) ) del %listfile% pause 
  • 使用内置的dir命令
    (这是一个简化的代码,不会在名称中带!文件)。

     @echo off setlocal enableDelayedExpansion for /f "eol=* delims=" %%a in ('dir /s /AL /b "."') do ( for /f "eol=* tokens=2 delims=>" %%b in ('dir "%%a" ^| find "<SYMLINK>"') do ( set "target=%%b" set "target=!target: %%~nxa =!" set "target=!target:~0,-1!" for /f "eol=* delims=[ tokens=2" %%c in ("!target!") do ( ren "%%a" "%%~nxa.bak" mklink /h "%%~fa" "%%c" ^ && (del "%%a.bak") ^ || (ren "%%a.bak" "%%~nxa" & echo %%a) ) ) ) pause