无法创建符号链接 - 当文件已存在时无法创建该文件

问题描述 投票:0回答:3

TLDR;运行下面的命令时,出现“当该文件已存在时无法创建文件”错误。我对在符号链接上读到的所有内容感到非常困惑,因为基本上总是不清楚哪个目录是哪个目录以及手头的两个或一个目录是否需要已经存在。所以我在下面发布了我的命令,我希望有人能够发现错误(并用简单的术语解释它):)。


最近,我的 C 驱动器(SSD)已满,我决定将一些东西转移到我的 D 驱动器(普通硬盘)。我阅读了有关符号链接的内容,并尝试将目录从 C:\ 链接到 D:,但我总是收到“当该文件已存在时无法创建文件”错误。我的命令如下:

C:\users\me\documents\main-folder\folder-I-want-linked > mklink /J "D:\folder\another folder\folder-where-I-want-to-store-the-docs" "C:\users\me\documents\main-folder\folder-I-want-linked"

虽然我是一名初级程序员并且了解一些有关 CLI 的知识,但我无法找出我的错误。

  1. 我想也许我应该颠倒这两个目录。我读到的资料来源让我感到困惑:例如,微软官方文档谈到了 和 ,这可能指两个目录,具体取决于你如何看待它。我对符号链接应该如何指向有点困惑:在我的常识中,但我认为根据 this page from howtogeek.com .

    ,这种语法是正确的
  2. 我想,由于错误是某些东西已经存在,所以我的空地图应该被删除,因为也许它会被创建?在这方面,我发现 superuser.com 上的这个接受的答案非常令人困惑。我还在 stackoverflow.com 上看到了这个接受的答案,说目标目录不能存在?因为这是我想放置文件的位置,所以我觉得这很奇怪。从另一个来源(我无法快速找到)我了解到这两个目录已经需要存在。

  3. 我认为我运行命令的地图不正确。然而,运行该命令之上一层的命令(因此在“主文件夹”内部)也给了我错误;从 D 驱动器位置尝试此操作也是如此。但是,从前面提到的 howtogeek.com 来源中,我发现我不需要位于特定目录中?

我还在这个网站上看到了很多有关符号链接的问题,但我没有找到任何可以帮助我的答案。我可能在这里让事情变得复杂,所以如果有人有一个简单的更正/解释,我将非常感激:)。

windows cmd command-line-interface symlink mklink
3个回答
5
投票

感谢@Mofi,我发现了我的错误:

  1. 空文件夹(我的 C 驱动器上的
    folder-I-want-linked
    )不应该存在:它将在创建链接时创建;
  2. 这也意味着符号链接应该从父目录创建(
    C:\users\me\documents\main-folder
    );
  3. 我应该使用
    /D
    而不是
    /J
  4. 由于某种原因,拼写出我想要创建的文件夹的绝对路径不起作用(
    C:\...\...\folder-I-want-linked
    ),但是从我当前位置的相对路径(所以简单地
    folder-I-want-linked
    )却可以。

我的示例的正确语法:

C:\users\me\documents\main-folder> mklink /D "folder-I-want-linked" "D:\folder\another folder\folder-where-I-want-to-store-the-docs"

0
投票

只需移动到要创建链接的目录,然后删除要链接的文件,然后运行 mklink /D "file to be linked" "from where to link"


0
投票

我试图将 .android 和 .gradle 文件从电脑上的 C 驱动器移动到另一个驱动器 (E)。然而,同样的问题却不断出现。

解决方案: 我从 C 盘中删除了要移动的文件夹,在 E 盘中创建了新文件夹,并在命令提示符中使用以下命令(以管理员身份运行):

mklink /D C:\Users\dibye\.android E:\Android_DNT\.android
mklink /D C:\Users\dibye\.gradle E:\Android_DNT\.gradle
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.