Windows native Alternative für ln -s
ist mklink
.
Gibt es eine native Alternative für readlink
? Oder wie man nativ erkennt, ob die Datei Symlink ist?
Ich glaube nicht, dass es ein Tool gibt, das direkt readlink
entspricht. Aber Sie können in der Ausgabe von dir
sehen, ob ein Element ein Symlink ist oder nicht, so dass Sie dies immer noch über die Befehlszeile oder in einem Skript ermitteln können.
Sie können ziemlich einfach testen, ob eine bestimmte Datei ein Symlink ist, indem Sie eine Syntax wie folgt verwenden:
%Vor% Errorlevel wird 0 sein, wenn " <SYMLINK>
" gefunden wird, und wird sonst 1 sein.
Das eigentliche Ziel des Symlinks zu bestimmen, ist eine andere Sache, und meiner Meinung nach nicht so geradlinig. Die Ausgabe von dir mysymlink | find "<SYMLINK>"
könnte wie
Sie können das analysieren, aber einige der Zeichen machen es schwierig, alle in einer Variablen zu behandeln, daher fiel mir der Umgang mit einer temporären Datei leichter:
%Vor% Dies ergibt eine Ausgabe wie [C:\Windows\Temp\somefile.txt]
. (Denken Sie daran, %%i
innerhalb eines Batch-Skripts zu verwenden; das obige Beispiel wird an der Eingabeaufforderung angezeigt.)
Um das Ergebnis ohne die Klammern zu erhalten, können Sie Folgendes tun:
%Vor% Die Variable %answer%
enthält das Ergebnis mit den Klammern, also ist %answer:~1,-1%
das Ergebnis ohne das erste oder das letzte Zeichen.
Sie müssen das stdout nicht in eine temp.txt-Datei umleiten. Sie können dies einfach in einer Zeile tun:
%Vor%Beachten Sie auch, dass die obige Methode von Lars nur für "Datei" -Symbole gilt. Diese Methode muss für Verzeichnis-Symlinks angepasst werden, da die Übergabe eines Verzeichnisses an den "dir" -Befehl die tatsächlichen Inhalte des Verzeichnisses auflistet (die sich selbst dort nicht enthalten)
Also würden Sie verwenden:
%Vor%Beachten Sie die Einbeziehung des * in den Anruf und das Hinzufügen des "D" in der FIND
Der Stern verhindert, dass Verzeichnis den Inhalt dieses Verzeichnisses auflistet.
Um den Vorgang für Symlinks zwischen Dateien oder Verzeichnissen weiter zu vereinfachen, würden Sie einfach immer das Sternchen einschließen und für das FIND-Argument würden Sie es in eine Teilübereinstimmung ändern, so dass es mit oder ohne "D" am Ende übereinstimmt
%Vor%Und schließlich, da diese Methode tatsächlich die Datei innerhalb der Klammern [] zurückgibt, wäre es besser, sie abzugrenzen und Sie mit der endgültigen Methode zu verlassen:
%Vor%