我正在测试一个将在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
我应该怎么做才能解决这个问题?
答案 0 :(得分:0)
我自己找到了解决方案。
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。