一千萬個為什麽

搜索

逃離UNC路徑的正確方法是什麽?

假設有一個文件 \\ server-42 \ tmp \ dir \ test.txt 。當我的插件嘗試通過 system()執行此命令時,它會觸發錯誤:

cd "\\server-42\tmp\dir" && git ls-files --error-unmatch --full-name test.txt

錯誤是 E484:無法打開文件C:\ Users \ foo \ AppData \ Local \ Temp \ blah.tmp

該目錄由 shellescape(fnamemodify(filepath,':h')生成,其中 filepath 是文件的完整路徑。該文件由 shellescape生成( fnamemodify(filepath,':t')

我怎樣才能讓它發揮作用?

提前謝謝了!

最佳答案

您遇到的問題是Windows上的命令行子系統不支持UNC路徑。 (嘗試運行cmd.com然後 cd \\ server \ path \ to \ dir 並註意錯誤消息 CMD不支持UNC路徑作為當前目錄。

這使您可以使用 net use 將路徑映射到臨時驅動器號,或者使用 cd 而不是使用 pushd ,基本上將您的路徑映射到臨時驅動器號,以便您以後可以輕松訪問該文件。

使用 pushd 將臨時創建映射到網絡共享的驅動器,然後更改為相對於它的路徑。 popd 然後將斷開共享並返回到您之前的當前目錄。

轉載註明原文: 逃離UNC路徑的正確方法是什麽?