Windows native 替代 ln -smklink
readlink 是否有任何 native 替代品?或者如何本地识别文件是否是符号链接(symbolic link)?

最佳答案

我不相信有任何工具直接等同于 readlink 。但是您可以在 dir 的输出中看到某个项目是否是符号链接(symbolic link),因此您仍然可以从命令行或脚本中确定这一点。

测试它是否是符号链接(symbolic link)

您可以使用以下语法轻松测试给定文件是否是符号链接(symbolic link):

 dir mysymlink  | find "<SYMLINK>" >NUL
 if not errorlevel 1  echo. It's a symlink!

在找到“<SYMLINK>”的情况下,错误级别将为 0,否则为 1。

确定符号链接(symbolic link)的目标

确定符号链接(symbolic link)的实际目标是另一回事,在我看来并不那么简单。 dir mysymlink | find "<SYMLINK>" 的输出可能看起来像
11/13/2012  12:53 AM    <SYMLINK>      mysymlink [C:\Windows\Temp\somefile.txt]

你可以解析这个,但是有些字符很难在一个变量中处理所有的,所以我发现处理一个临时文件更容易:
 dir mysymlink | find "<SYMLINK>" > temp.txt
 for /f "tokens=6" %i in (temp.txt) do @echo %i

这会产生类似 [C:\Windows\Temp\somefile.txt] 的输出。 (记住在任何批处理脚本中使用 %%i;以上来自命令提示符。)

要获得没有括号的结果,您可以执行以下操作:
 dir mysymlink | find "<SYMLINK>" > temp.txt
 for /f "tokens=6" %i in (temp.txt) do set answer=%i
 echo %answer:~1,-1%

变量 %answer% 包含带括号的结果,因此 %answer:~1,-1% 是没有第一个或最后一个字符的结果。

关于windows - Windows 上 readlink 的 native 替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13298414/

10-13 08:35