在Windows bash上自动创建符号链接

12 浏览
0 Comments

在Windows bash上自动创建符号链接

我正在尝试制作一个脚本来进行一些目录管理。最终脚本将在Windows上运行,并且最好用Python编写。在脚本的某个地方,我需要自动创建多个文件夹之间的符号链接。脚本本身在一个bash终端(Git Bash)中以非管理员权限运行。Windows没有处于开发者模式。\n最完美的解决方案是拥有一个元组列表(链接,源),并一次性创建相应的符号链接,只需按一次“是”获取管理员权限。\n我已经做了一些研究:\n

\n假设我想在当前工作目录中创建到相对目录的符号链接。我尝试了2种方法:\n

    \n

  1. 当我将上述所有点结合起来,并从Git Bash终端执行以下命令时:\npowershell \'start cmd -v runAs -Args /k, cd, $pwd, \"&\", mklink, /D, \\\"link_to_utils\\\", \\\"common\\utils\\\"\'\n一个新的终端打开了(在同意管理员权限后)。但它导致在C:\\的根目录下创建了一个新的符号链接。\n
  2. \n

  3. 当我执行这个命令:\npowershell \'start cmd -v runAs -Args /k, cd, $pwd\n一个新的终端打开了(在同意管理员权限后)。现在我可以运行这个命令:\nmklink /D \"link_to_utils\" \"common\\utils\"\n链接被创建在我想要的当前工作目录中。\n
  4. \n

\n所以我的问题是:\na)如何使选项1在bash中工作?\nb)为什么它实际上在C:\\中创建了符号链接?\nc)有没有办法将命令传递到已打开的提升的cmd终端(使选项2工作)?\n注意:我一直在尝试使用Python和win32api(pywin32)找到解决方案。但这导致了每个需要创建的符号链接都会打开一堆命令提示符。而且关于pywin32几乎没有任何文档资料。

0
0 Comments

在Windows bash上自动创建符号链接的问题是由于缺乏自动化方法导致的。可以使用PowerShell的New-Item命令以提升的权限来创建符号链接。下面是使用PowerShell创建符号链接的示例:

$link = New-Item -ItemType SymbolicLink -Path .\link -Target .\Notice.txt
$link | Select-Object LinkType, Target
LinkType     Target
--------     ------
SymbolicLink {.\Notice.txt}

以上代码使用New-Item命令创建了一个名为"link"的符号链接,目标文件为"Notice.txt"。通过选择对象的方式,我们可以看到该符号链接的类型为SymbolicLink,目标为".\Notice.txt"。

通过以上方法,可以在Windows bash上自动创建符号链接。

0
0 Comments

在Windows的bash环境中,自动创建符号链接的问题出现的原因是由于PowerShell解释传递的命令行的内容时,需要遵循其语法规则。这意味着需要使用双引号"..."来扩展(字符串插值)自动的$PWD变量,并且在该字符串内部的嵌入的"字符必须使用`"进行转义(也可以使用""进行转义)。

解决这个问题的方法是使用以下命令行:

powershell 'Start-Process -Verb RunAs cmd /k, " cd `"$PWD`" & mklink /D `"link_to_utils`" `"common\utils`" "'

这个命令行通过一个字符串参数传递给cmd.exe,以便在概念上更加清晰。

0