我想在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