[英]Passing argument with one single quote in it to a .PS1 script
我正在測試一個將放入win10右鍵單擊上下文菜單的PS腳本,該腳本只接受路徑信息,然后將其回顯到我的終端窗口。 注冊表項如下所示: Computer\\HKEY_CLASSES_ROOT\\*\\shell\\MyScript\\command @="powershell.exe -window hidden -command .'\\"G:\\\\path to my script\\\\MyScript.ps1\\"' '%V'"
該腳本只是$args
。
對於大多數常規路徑,它運行正常。 現在我堅持文件名包含一個單引號的情況,如下所示: "D:\\John's file.txt"
。
它拋出一個錯誤:
The string is missing the terminator: '. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
我該怎么做才能解決這個問題?
我自己找到了解決方案。
Computer\\HKEY_CLASSES_ROOT\\*\\shell\\MyScript\\command @="powershell.exe -window hidden -file \\"G:\\\\path to my script\\\\MyScript.ps1\\" "%V""
而不是-command
,使用-file
和%V
周圍的單引號應該是雙引號。
2.要獲得完整路徑,您必須使用-join
運算符連接由空格分隔的字符串(如果路徑包含空格):
$path = $args -join " "
Powershell v6用戶可以使用join-string
cmdlet。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.