2012-04-17 27 views
13

dicen que la configuración que un enlace simbólico:ventanas de destino de vínculo simbólico

mklink /D C:\root\Public\mytextfile.txt C:\root\Public\myothertextfile.txt 

hay una manera de ver lo que el objetivo de myothertextfile.txt está utilizando la línea de comandos?

+0

o si es posible ¿cómo perseguir el enlace en Perl –

+5

Es un poco extraño tener un directorio llamado MyTextFile.txt; ¿Estás seguro de que quisiste usar la opción/D? –

+3

De todos modos, el comando "dir" muestra el destino de enlaces simbólicos por defecto. –

Respuesta

12

Como Harry Johnston dijo dir comando muestra el destino de vínculos simbólicos

2014/07/31 11:22 <DIR>   libs 
2014/08/01 13:53    4,997 mobile.iml 
2014/07/31 11:22    689 proguard-rules.pro 
2014/09/28 10:54 <JUNCTION>  res [\??\C:\Users\_____\mobile\src\main\res] 
+2

Eso es realmente un punto de unión, no un enlace simbólico, pero una lista de directorios para un enlace simbólico se ve muy similar. –

+1

Al usar git bash, 'dir' no está disponible, pero puede escribir en su lugar' cmd // C dir' –

1

Tal vez alguien está interesado en un método de C# para resolver todos los enlaces simbólicos de directorio en un directorio similar a Directory.GetDirectories(). Para enumerar uniones o enlaces simbólicos de archivos, simplemente cambie la expresión regular.

static IEnumerable<Symlink> GetAllSymLinks(string workingdir) 
{ 
    Process converter = new Process(); 
    converter.StartInfo = new ProcessStartInfo("cmd", "/c dir /Al") { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, WorkingDirectory = workingdir }; 
    string output = ""; 
    converter.OutputDataReceived += (sender, e) => 
    { 
     output += e.Data + "\r\n"; 
    }; 
    converter.Start(); 
    converter.BeginOutputReadLine(); 
    converter.WaitForExit(); 

    Regex regex = new Regex(@"\n.*\<SYMLINKD\>\s(.*)\s\[(.*)\]\r"); 

    var matches = regex.Matches(output); 
    foreach (Match match in matches) 
    { 
     var name = match.Groups[1].Value.Trim(); 
     var target = match.Groups[2].Value.Trim(); 
     Console.WriteLine("Symlink: " + name + " --> " + target); 

     yield return new Symlink() { Name = name, Target = target }; 
    } 
} 

class Symlink 
{ 
    public string Name { get; set; } 
    public string Target { get; set; } 
} 
Cuestiones relacionadas