windows 如何按原样复制连接而不是它所指向的文件夹?

vatpfxk5  于 2023-10-22  发布在  Windows
关注(0)|答案(3)|浏览(116)

我将一组文件夹从服务器1复制到服务器2。在文件中,我也有junction:包含配置文件集的文件夹:在服务器1上这个连接点指向...假设c:\Config(包含配置1.cfg、配置2.cfg)
在服务器2上,我也有c:\Config文件集,但当然它们包含自己的设置,我不想覆盖它们。
所以我想做的是按原样复制连接点。相反,我从服务器1获得了P2.1.cfg和P2.2.cfg的副本:(
如何解决这一问题??
p.s.1.解释起来很长,但我不能避免在这里使用junction(这与配置必须放置的位置限制有关(子文件夹-'junction'指向'外部'文件夹))
p.s.2.操作系统为Windows Server 2003

nqwrtyyt

nqwrtyyt1#

FastCopy是一个小程序。

6qqygrtg

6qqygrtg2#

从驱动器到驱动器的交叉点没有任何意义-交叉点指向磁盘上的特定节点。您真正需要的是一个符号链接,它指向文件系统中的特定 * 路径 *,但不幸的是,这在Server 2003上不存在。你运气不好,你必须在复印后的脚本中修改这个。

svujldwt

svujldwt3#

您可以使用脚本重新创建连接点列表。
https://github.com/andry81/contools/tree/master/Scripts/Tools/admin/Junction

list-junction-points.bat

@echo off

for /F "usebackq eol= tokens=* delims=" %%i in (`@dir /A:L /B %* 2^>nul`) do echo.%%i
list-junction-points.bat /S c:\ > junction-points.lst

然后获取连接点路径:

read-junction-points.bat

@echo off

for /F "usebackq eol= tokens=* delims=" %%i in ("%~1") do for /F "usebackq eol= tokens=4,* delims= " %%j in (`dir /A:L "%%i\.." 2^>nul ^| findstr /R /C:"\[.*\]"`) do if "%%~ni" == "%%j" ( set "J=%%k" & call echo.%%i*%%J:~1,-1%%)
read-junction-points.bat junction-points.lst > junction-paths.lst

然后重新创建连接点(需要管理员权限):

B-junction-points.bat

@echo off

for /F "usebackq eol= tokens=1,* delims=*" %%i in ("%~1") do ( echo."%%i" -^> "%%j" & mklink /j "%%i" "%%j" )
create-junction-points.bat junction-paths.lst

警告:eol=实际上不为空,包含04编码字符。

只有在需要管理员权限的创建时才需要连接点连接。

相关问题