PowerShell工作目錄路徑含中括號字元問題 - Windows

Table of Contents

作業系統:Windows 10

Service Pack:20H2

發生問題頻率:100%

是否有做Windows Update:有

問題內容:PowerShell工作目錄路徑中帶有中括號導致結果不如預期

PS D:\> Test-Path -LiteralPath "D:\[test] videos\test video 1.mp4"
True
PS D:\> Test-Path -LiteralPath "D:\test videos\test video 1.mp4"
True
PS D:\> Set-Location -LiteralPath "D:\test videos"
PS D:\test videos> Test-Path -LiteralPath "test video 1.mp4"
True
PS D:\test videos> Set-Location -LiteralPath "D:\[test] videos"
PS D:\[test] videos> Test-Path -LiteralPath "test video 1.mp4"
False
PS D:\[test] videos> $env:Path = "C:\ffmpeg\bin;" + $env:Path
PS D:\[test] videos> Start-Process -FilePath "ffmpeg" -ArgumentList '-i "test
video 1.mp4" -c copy output.mkv' -NoNewWindow -PassThru -Wait
Start-Process : 無法執行作業,因為萬用字元路徑 D:\[test] videos 無法解析成檔案

位於 線路:1 字元:1
+ Start-Process -FilePath "ffmpeg" -ArgumentList '-i "test video 1.mp4" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (D:\[test] videos:String) [Start-
Process], FileNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.
StartProcessCommand

如上所示若工作目錄中帶有中括號時用Test-Path判斷相對路徑皆回傳False
Start-Process命令也會發生發生錯誤...
我想請問,除了使用絕對路徑以外有什麼解決方法?

--

All Comments

Hazel avatarHazel2020-10-24
一般是替換成2個雙引號,就會當成一個雙引號(溢出字元處
理)
Lauren avatarLauren2020-10-25
看是那種語言,就配合該語言的溢出字元處理。加上看是誰
Lauren avatarLauren2020-10-27
執行路徑,也要依那種方式處理
Kristin avatarKristin2020-10-29
不對, 原 PO 的問題是 powershell 好像對工作目錄裡有 []
Gilbert avatarGilbert2020-11-01
的時候使用相對路徑指定檔案會有問題
Brianna avatarBrianna2020-11-05
因為是相對路徑所以指令裡根本也就沒有能跳脫的字元
Mia avatarMia2020-11-06
目前找得到的解決法都是繞個圈指定絕對路徑, 例如用 $(pwd)
Joseph avatarJoseph2020-11-11
展開成工作目錄, 再丟給指令去做
Victoria avatarVictoria2020-11-12
L大的意思是先($pwd+相對路徑)組成完整路徑在處理嗎?
Jacky avatarJacky2020-11-16
但我用Start-Process執行$env:Path下的程式也會出錯
除非我放棄指定工作目錄
Andrew avatarAndrew2020-11-20
這篇的解答是你要的嗎? https://tinyurl.com/y5gnwnw5
Oliver avatarOliver2020-11-25
我可以正常處裡含中掛號的檔案路徑
我遇到的問題是工作目錄中含有中括號會出錯
Madame avatarMadame2020-11-27
不過Test-Path無法自己指定工作目錄就不適用這方法
Hamiltion avatarHamiltion2020-11-28
目前也只能將相對路徑轉成完整路徑來避開工作目錄問題