我正在尝试做一个脚本来做一些目录管理。最后的脚本将在上运行,最好用python编写。在脚本的某个地方,我需要自动创建多个符号链接,在多个文件夹之间。脚本本身没有来自bash终端(Git Bash)的管理员权限运行。Windows不处于开发人员模式。
完美的解决方案是拥有一个元组列表(链接、源),并一次性创建相应的符号链接,同时只需按一次管理员权限的"Yes“。
我已经做了一些研究:
mklink /D link source_directory
powershell 'start cmd -v runAs -Args /k, [comma-separated-args]'
powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", [comma-separated-args]'
假设我想在我当前的工作目录中创建一个符号链接到一个相对目录。我试了两种方法:
当我组合以上所有点并从Git Bash终端执行以下命令时,
powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", mklink, /D, \"link_to_utils\", \"common\utils\"'
一个新的终端开放了(在同意了管理权限之后)。但是它导致在C:** .的**根中创建了一个新的符号链接。
当我执行以下操作时,
powershell 'start cmd -v runAs -Args /k, cd, $pwd
一个新的终端开放了(在同意了管理权限之后)。我现在可以运行以下命令:
mklink /D "link_to_utils" "common\utils"
该链接是按照我的要求在当前工作目录中创建的。
所以我的问题是:
( a)如何使选项1在bash中工作?
( b)为什么它实际上在C:\中创建符号链接?
( c)是否有办法将命令输送到已打开的高架cmd终端(使备选方案2工作)?
注意:我一直试图使用python和win32api (pywin32)找到解决方案。但是,这会导致需要创建的每个符号链接都会出现大量的命令提示。此外,几乎没有任何关于pywin32的文档。
发布于 2022-11-08 16:06:04
使用以下方法:
powershell 'Start-Process -Verb RunAs cmd /k, " cd `"$PWD`" & mklink /D `"link_to_utils`" `"common\utils`" "'$PWD变量的展开(字符串内插)需要一个"..." (双引号)字符串,并且必须将该字符串中的嵌入"字符转义为`" (""也能工作)。cmd.exe的传递命令行作为单个字符串参数传递,以便在概念上更加清晰。https://stackoverflow.com/questions/74363226
复制相似问题