在windows中将符号链接转换为硬链接

在windows中将符号链接转换为硬链接,windows,batch-file,symlink,Windows,Batch File,Symlink,我想在windows批处理脚本的目录中将软链接递归地转换为硬链接。我已经能够在linux中做到这一点,但我不太确定如何在批处理文件中做到这一点。有人能告诉我该怎么做才能完成吗 谢谢我看到了两种将符号链接转换为硬链接的方法: 使用实用程序 我能够挖掘更多,我认为/L将有助于复制符号链接。但我不确定我是否正确。我正在尝试将本地计算机中的文件复制到远程主机。我正在复制/L这是正确的方法吗?请记住,这通常不是一件明智的事情,因为符号链接和硬链接的语义有所不同。我想你是在处理一个特殊情况?嗨,Harr

我想在windows批处理脚本的目录中将软链接递归地转换为硬链接。我已经能够在linux中做到这一点,但我不太确定如何在批处理文件中做到这一点。有人能告诉我该怎么做才能完成吗


谢谢

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

  • 使用实用程序


我能够挖掘更多,我认为/L将有助于复制符号链接。但我不确定我是否正确。我正在尝试将本地计算机中的文件复制到远程主机。我正在复制/L这是正确的方法吗?请记住,这通常不是一件明智的事情,因为符号链接和硬链接的语义有所不同。我想你是在处理一个特殊情况?嗨,Harry,我知道这不是一件好事,但我需要完成这件事,因为我们的服务器不复制符号链接,但我需要这样做:(
@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
@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