我的搜索仅向我展示了如何使用cmd中的 mklink 创建符号链接。我已经看到一些事情说要使用 readlink ,但是PowerShell和cmd不知道什么是 readlink ,并且 cd 显然不起作用。那么我该如何关注?
答案 0 :(得分:2)
对于您的问题,我制作了此批处理文件:
mkdir truedir
dir > truedir\fileone.txt
mklink /d symdir truedir
cd symdir
dir
我发现从命令提示符处获取到目录的符号链接的内容没有问题。 Powershell 5.1(Win 10)也没有问题:
Get-ChildItem C:\Users\<user>\OneDrive\Desktop\test2\symdir
您能给我们一个代码示例(批处理或powershell相同)来复制您的问题吗?
答案 1 :(得分:1)
为避免因您的问题引起的混乱:
Windows shortcut files (*.lnk
files) (是Windows (GUI) shell 的功能)与 symbolic links (symlinks)不同,这是(NTFS)文件系统 的功能。
快捷文件-您感兴趣的-将文件或文件夹指向的路径存储在文件内 ,这就是为什么>
cd
cd
到快捷文件的目标文件夹,因为诸如cd
之类的文件系统命令对文件的内容一无所知。 Set-Location
或Samples.lnk
(在PowerShell)。快捷方式文件的文件格式是二进制的,可以通过公开Windows Shell功能的in-box COM component读取;例如,要确定名为# NOTE: * Despite the name "CreateShortcut()", the method is also
# used to *read* shortcut files.
# * Prefixing the filename with "$PWD/" is needed in order
# to target a file in the current directory, because
# the method doesn't know what PowerShell's current dir. is.
cd (New-Object -ComObject WScript.Shell).CreateShortcut("$PWD/Samples.lnk").TargetPath
的快捷方式文件的目标文件夹并更改为该文件夹,请使用PowerShell:
cd
符号链接:
(通常)透明地重定向到其目标 ,即它们指向的文件系统项(文件或文件夹)。
因此,您可以直接将readlink
与指向文件夹的符号链接一起使用,但是请注意,仍然是 symlink 的路径显示。
要 打印符号链接的目标-类似于Samples
实用程序在类Unix平台上所做的操作-使用PowerShell;例如,在当前目录中打印名为 (Get-Item Samples).Target
# Or, after running `cd Samples`:
(Get-Item .).Target
的符号链接的目标:
cmd.exe
请注意,在dir /al <link-path>*
中获取符号链接的目标并不是一件容易的事,但是如果您使用
[...]
,清单还将在名称后显示链接的目标路径。 ,用*
括起来;请注意,尾随mysql -uroot -p'password'
是必需的,以便显示有关链接本身的信息,而不是其目标的 contents ;请注意,尽管可能性不大,但也可能会匹配以相同路径开头的其他链接。
与快捷方式文件不同,符号链接在Windows世界中仍然很少使用,尤其是因为在Windows 10之前,它们总是需要创建管理员权限;在Windows 10中,如果(由管理员)启用了开发人员模式,那么即使非管理用户/未提升权限的进程现在也可以创建符号链接-请参见https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/,这也解释了为什么符号链接可能会增加的原因将来使用。