我正在尝试制作一个脚本来执行一些目录管理。最终的脚本将在Windows上运行,最好使用python编写。在脚本的某一点上,我需要自动创建多个文件夹之间的多个符号链接。该脚本本身在没有来自bash终端(Git Bash)的管理员权限的情况下运行。Windows未处于开发人员模式。
完美的解决方案是拥有一个元组列表(链接、源),并一次性创建相应的符号链接,同时只需按一次“是”即可获得管理员权限。
我已经做了一些研究:
- 如何从提升的cmd:Git Bash shell fails to create symbolic links内部创建目录之间的符号链接
mklink /D link source_directory
- 如何在cmd中以管理员身份从bash内部运行命令:Launch Elevated CMD.exe from Powershell
powershell 'start cmd -v runAs -Args /k, [comma-separated-args]'
- 以管理员身份启动PowerShell命令后如何设置工作目录(否则从C:\WINDOWS\System32\内部启动终端):PowerShell: Run command from script's directory
powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", [comma-separated-args]'
假设我想要在当前工作目录中创建一个指向相对目录的符号链接**。我试了两种方法:
1.当我组合以上所有要点并从Git Bash终端执行以下命令时:powershell 'start cmd -v runAs -Args /k, cd, $pwd, "&", mklink, /D, \"link_to_utils\", \"common\utils\"'
一个新的终端打开(在同意管理员权限之后)。但这导致在C:**的**根目录中创建了一个新的符号链接。
1.当我执行此命令时:powershell 'start cmd -v runAs -Args /k, cd, $pwd
一个新的终端打开(在同意管理员权限之后)。我现在可以运行以下命令:mklink /D "link_to_utils" "common\utils"
如我所愿,该链接已在当前工作目录中创建。
所以我的问题是:
A)如何在bash中使用选项1?
B)为什么要在C:\中创建符号链接?
C)有没有办法通过管道将命令传送到打开的高架cmd终端(以使选项2工作)?
注意:我一直在努力寻找一种使用python和win32api(Pywin32)的解决方案。但这会导致为需要创建的每个符号链接打开一堆命令提示符。此外,几乎没有任何关于pywin32的文档。
1条答案
按热度按时间vtwuwzda1#
使用以下选项:
"..."
(双引号)字符串才能进行自动$PWD
变量的扩展(字符串内插),并且该字符串中的嵌入"
字符必须转义为``"(
""`也可以)。为了概念清晰,
cmd.exe
的直通命令行作为单个字符串参数传递。