我正在嘗試制作一個腳本來進行一些目錄管理。最終腳本將在Windows上運行,最好用python撰寫。在腳本中的某一時刻,我需要在多個檔案夾之間自動創建多個符號鏈接。該腳本本身在沒有管理員權限的情況下從 bash 終端 (Git Bash) 運行。Windows 未處于開發人員模式。
完美的解決方案是擁有一個元組串列(鏈接,源)并一次創建相應的符號鏈接,同時只需按一次“是”以獲得管理員權限。
我已經做了一些研究:
如何從提升的 cmd 內部創建目錄之間的符號鏈接:Git Bash shell 無法創建符號鏈接
mklink /D link source_directory如何從 bash 內部以管理員身份在 cmd 中運行命令:從 Powershell 啟動 Elevated CMD.exe
powershell 'start cmd -v runAs -Args /k, [comma-separated-args]'如何在以管理員身份啟動 powershell 命令后設定作業目錄(否則它會從 C:\Windows\System32\ 內部啟動終端):PowerShell:從腳本目錄運行命令
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 的檔案。
uj5u.com熱心網友回復:
使用以下內容:
powershell 'Start-Process -Verb RunAs cmd /k, " cd `"$PWD`" & mklink /D `"link_to_utils`" `"common\utils`" "'
由于是 PowerShell 解釋正在傳遞的命令列的逐字內容,因此必須遵循其
"..."語法規則,這意味著發生自動變數的擴展(字串插值)需要一個(雙引號)字串$PWD,并且嵌入"的該字串中的字符必須轉義為`"(""也可以)。為清楚起見,傳遞命令列作為
cmd.exe單個字串引數傳遞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/530773.html
標籤:电源外壳命令windows-subsystem-for-linux符号链接pywin32
下一篇:根據查找哈希表重命名檔案
