Wie erstellen Sie symbolische links für mehrere Dateien in mehrere Ordner mit der Eingabeaufforderung oder PowerShell?
Ich habe zwei Ordner, die eine Menge von sub-Ordner in verschiedenen Laufwerken. Erstellen symbolischen link für alle Dateien aus dem zweiten Ordner in den ersten.
C:\folderC>tree /f
C:.
├───folder1
│ file1.txt
│ file3.txt
│
└───folder2
file1.txt
file3.txt
D:\folderD>tree /f
D:.
├───folder1
│ file2.txt
│
└───folder2
file2.txt
Ergebnis mit 2 Befehlen:
C:\>mklink C:\folderC\folder1\file2.txt D:\folderD\folder1\file2.txt
symbolic link created for C:\folderC\folder1\file2.txt <<===>> D:\folderD\folder1\file2.txt
C:\>mklink C:\folderC\folder2\file2.txt D:\folderD\folder2\file2.txt
symbolic link created for C:\folderC\folder2\file2.txt <<===>> D:\folderD\folder2\file2.txt
C:.
├───folder1
│ file1.txt
│ file2.txt
│ file3.txt
│
└───folder2
file1.txt
file2.txt
file3.txt
Wie man es für alle Dateien mit wenigen Befehlen statt zu schreiben den code manuell für jede Datei?
PS: Zuerst wollte ich verwenden hart links, aber es scheint, es ist nicht möglich.
C:\>mklink /h C:\folderC\folder2\file2.txt D:\folderD\folder2\file2.txt
The system cannot move the file to a different disk drive.
- Gibt es eine Möglichkeit können Sie verzichten, erzeugen von harten oder symbolischen links zu vollbringen, was Sie zu tun versuchen?
- Ich denke nicht, da die Dateien in D zogen von C und Sie sollte sichtbar in C. ich versuche zur Verringerung der internen HDD-Aktivität durch die Verwendung von externen USB-Laufwerk.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, etwas zu verlinken:
Ich glaube, dass dies fehlschlagen wird, wenn der gleiche Dateiname bereits existiert in
c:\folderc
. Also, wenn Sie brauchen, um eine Datei ersetzen inc:\folderc
mit einem symbolischen link vond:\folderd
Sie brauchen, um es zu erweitern, um die vorhandene Datei entfernen.UPDATE: Dies wird nur gehen, um eine Ebene nach unten mit der
recurse
option. Es ist nicht die schönste Lösung, aber es sollte funktionieren.Hard links sind nur innerhalb des selben Dateisystems sind: Sie nicht über verschiedene Festplatten (auch bei Verwendung von reparse-Punkte zu vermeiden Laufwerksbuchstaben).
Zweite, "symbolische Verknüpfungen" unter Windows sind eine shell (zB. Windows-Explorer) Artefakt. Sie funktioniert nur, wenn die Anwendungen nutzen die shell-namespace (was die meisten nicht).
Besser, zu vermeiden.
anderen Weg. In einer .bat-Datei, ich benutze diese :
Erklärung :
for /f
... Loop-Schleife in eine gewählte dir mit Unterordner%%i
ist der name der Datei mit Pfad (Ordner\Unterordner\one_file.ext).%%i~nxi
ist der name ohne Pfad (n
) und Umfang (x
).mklink
créate den link für%%i
Es funktioniert. Meine Frage war anders. In 2 Rechnern, ich kann durchsuchen Sie alle symbolischen links (alle Ordner und Unterordner), aber in der Dritten nicht genau. Aber mit hard-links ist alles OK (mit
mklink /H
)Lesen Sie das Ende meiner Frage bitte.
Dank
like this
. Für multi-line-code, fügen Sie 4 Leerzeichen vor jeder Zeile. Sie können darüber Lesen Sie hier. 😉