Utiliser mklink dans Windows7

2

J'ai deux clés USB D:\et H:\, à l'intérieur, des fichiers bin

001.bin,002.bin sur D

003.bin 004.bin sur H

Je veux créer un lien symbolique de telle manière que, lorsqu'un programme y a accès, C:\binsil trouve tous les fichiers 001.bin,002.bin,003.bin,004.bindes lecteurs USB et y accède depuis les lecteurs USB.

Comment puis-je faire ceci?

Panayiotis
la source
Vous souhaitez lier individuellement chaque fichier?
Bob
@Bob Je ne prévois pas de supprimer les lecteurs dans ce cas, donc ça me convient, et oui, j'aimerais lier individuellement chaque fichier. Comment puis je faire ça?
Panayiotis
Désolé, je pensais aux points de jonction. Je n'ai jamais essayé les liens symboliques cross drive avec des supports amovibles.
Bob
Ok, juste essayé. Changer la lettre de lecteur rompt le lien, alors méfiez-vous de cela.
Bob
3
@Bob: Il devrait être possible d’éviter cela en créant des liens symboliques en utilisant le GUID du volume au lieu de la lettre du lecteur, comme dans \\?\Volume{1234-56-...}\001.bin. (Ceci est ce que les points de montage et les jonctions utilisent par défaut.)
grawity

Réponses:

4

Il est impossible de fusionner deux répertoires à l'aide d'un seul lien symbolique, car un lien ne peut avoir qu'une seule cible. Ceci s'applique également aux jonctions et aux liens symboliques. (Sous Linux, cela pourrait être réalisé au niveau de la couche VFS, en utilisant des systèmes de fichiers virtuels tels que overlayfs ou unionfs ; certains autres systèmes de type Unix ont également des concepts similaires de "montures d'union". Malheureusement, cela n'existe pas sous Windows.)

Mais si les .binnoms de fichiers restent toujours les mêmes, vous pouvez créer directement des liens symboliques vers les fichiers:

mkdir c:\bins
mklink /f c:\bins\001.bin d:\001.bin
mklink /f c:\bins\002.bin d:\002.bin
mklink /f c:\bins\003.bin h:\003.bin
mklink /f c:\bins\004.bin h:\004.bin
...and so on

Cela pourrait être réécrit comme:

for /f %f in (d:\*.bin) do mklink /f "c:\bins\%~nxf" "%~f"
for /f %f in (h:\*.bin) do mklink /f "c:\bins\%~nxf" "%~f"
Grawity
la source
1

Je ne pense pas que vous puissiez obtenir les fichiers D:et H:apparaître en tant que frères et soeurs à l'intérieur C:\bins. Vous devriez pouvoir utiliser les commandes suivantes pour créer deux jonctions de répertoires ci-dessous C:\bins.

>mklink /D /J "C:\bins\d" "D:\"
>mklink /D /J "C:\bins\h" "H:\"

Cela vous donnera c:\bins\det c:\bins\hoù vous trouverez 001.bin, 002.bindans c:\bins\det 003.bin, 004.binen c:\bins\h.

Born2BeMild
la source