Native Alternative für Readlink unter Windows

8

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?

    
Honza Štefl 08.11.2012, 21:49
quelle

2 Antworten

6

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.

Prüfe, ob es ein Symlink ist oder nicht

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.

Ermitteln Sie das Ziel eines Symlinks

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

aussehen %Vor%

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.

    
Lars Rohrbach 13.11.2012, 09:13
quelle
7

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%     
Dss 10.12.2014 17:39
quelle

Tags und Links