【发布时间】:2017-03-31 00:52:18
【问题描述】:
这个问题背后的想法很简单,但我是批处理脚本的新手,所以细微差别对我来说是不可能的。我需要创建一组符号链接来将共享一个公共父目录的多个源目录的内容复制到目标目录中。示例:
SrcDirParent
SrcDirA
FileA
SrcDirB
FileB
SubDir
FileC
应使用符号链接创建:
DstDir
FileA ~
FileB ~
SubDir
FileC ~
使用 ~ 显示符号链接。 SrcDirParent 和 DstDir 作为绝对路径从外部文件中读取。我不知道 SrcDirParent 中将包含哪些文件/文件夹,并且某些相关目录可能已经存在于 DstDir 中,而另一些则不存在。如果它们确实存在,我需要将符号链接与现有内容合并。
我目前遇到的障碍是文件路径。我打算像这样使用两个 for 循环:
for /d %%M in (%SRC%\*) do (
for /r %%F in (%SRC%\%%M\*) do (
mklink %DST%\%%F %SRC%\%%M\%%F
)
)
但这需要 %%M 和 %%F 的相对文件路径,并且这些变量正在填充绝对路径。我不确定如何解决这个问题。
我预计的另一个问题是 SRC 和 DST 的文件路径冲突时 - 我不想用符号链接覆盖现有路径。
希望这是发布此内容的正确位置。提前致谢。
【问题讨论】:
-
我看不懂 Dst 树,缺少 SubDirA + B?
-
SrcDir 应该是所有源目录的父目录。我进行了编辑以使示例更加清晰。
-
所以你想完全消除第一个子目录级别,但保留子目录?
-
是的,没错。
标签: batch-file symlink