使两个文件夹的内容显示在同一个文件夹中

使两个文件夹的内容显示在同一个文件夹中

在 Windows 7 中,我有三个文件夹:“Images”、“assets”和“all”。

我想要内容“图像”和“资产”自动出现在“全部”中,而无需将这些文件复制到该文件夹​​中(例如,我不想复制文件)。我还希望只复制内容而不是文件夹本身(这样做的原因是如果复制文件夹,它们将成为子目录。我正在使用可访问“全部”的打印热文件夹,但它看不到“全部”中的任何子目录)。

当图像和资产更新时(例如添加或删除文件),“全部”也应自动更新。

我怎样才能做到这一点?

这是我尝试过的:

图书馆:这是 Windows 内置的功能。它完全符合我的要求。但是,打印热文件夹无法将库识别为文件夹。

符号链接扩展:我可以使用它来使“images”和“assets”文件夹显示为“all”的子目录。但是,我希望“images”/“assets”的内容出现在“all”文件夹中(我不希望目录显示为子目录,因为如上所述,打印热文件夹无法访问子目录)。

答案1

使用 Windows 中提供的工具无法轻松完成此操作。

图书馆不是普通的文件夹,而是虚拟的文件夹。没有多少应用程序可以直接使用不是文件系统对象的 Windows Shell 对象。

因此创建一个脚本硬链接在“全部”中查找“资产”和“图像”中的所有文件似乎是最简单的方法。

cd all
rem Remove all the files in all
del /f /q *.*

rem Create hard links to files from assets and images
for %I in (<full-path-to>\assets\*.*) do mklink /h "%~nxI" "%I"
for %I in (<full-path-to>\images\*.*) do mklink /h "%~nxI" "%I"

这里%~nxI将仅扩展文件名和扩展名,而不扩展路径。如果文件夹位于不同的驱动器上,则必须使用符号链接:从命令中删除/h开关。mklink

每次更新“资产”和/或“图像”的内容时运行上述脚本,或定期运行它。

更好的解决方案是监视“资产”和“图像”中的文件更新,并将更改同步到“全部”。

答案2

我唯一能确定的方法是编写一个脚本,在“全部”中创建指向“资产”和“图像”中每个文件的硬链接。

但我认为,对于这样一个简单的任务来说,这种方法有点过度了。

答案3

唯一最好的方法是使用符号链接(symlink)方法。有了这个symlink-creator.bat文件,只需将所有(文件和文件夹)从所需文件夹拖出并输入目标路径。

相关内容