文字引号
问题描述:
我目前试图创建一个开放从右键上下文菜单管理员PowerShell的命令。对于上下文,上下文菜单命令在CMD中运行。文字引号
我的问题是,我想cd
到哪里右键出现的目录。下面的命令对大多数目录来说工作得很好,但是如果目录路径包含空格,那么它只会尝试移动到空格之前的路径部分,并引发错误。我的理解是,当前目录是通过%V
传入但是当我运行使用相同的处理的命令echo %V
,其与空间分割路径到2行,所以我假设被存储在单独的字符串的路径的部分?
Powershell -noexit "Start-Process 'C:\Users\<me>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell.lnk' -ArgumentList '-noexit','Set-Location -literalPath `"%V`"' -Verb RunAs"
我已经更新了上面的命令下面搭配的建议,并在桌面上右键单击(这在以前由于缺乏空间的工作),我现在得到以下错误:
Set-Location : Cannot find path 'C:\Users\<me>\Desktop`' because it does not exist.
At line:1 char:1
+ Set-Location -literalPath `C:\Users\<me>\Desktop`
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\<me>\Desktop`:String) [Set-Location], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
请注意,在上述两个代码块中,<me>
是我的实际用户名。
我一直在撕裂我的头发试图把路径周围的报价,但我似乎无法获得PowerShell来把由于引号的事实,我已经使用了单引号和双引号。
任何帮助将不胜感激,在此先感谢。
编辑:
对于那些仍然在寻找一个答案,我跑了以下PowerShell脚本功能性命令添加到我的上下文菜单:
$menu = 'Open Windows PowerShell Here as Administrator'
$command = "$PSHOME\powershell.exe -NoExit -NoProfile -Command ""Set-Location '%V'"""
'directory', 'directory\background', 'drive' | ForEach-Object {
New-Item -Path "Registry::HKEY_CLASSES_ROOT\$_\shell" -Name runas\command -Force |
Set-ItemProperty -Name '(default)' -Value $command -PassThru |
Set-ItemProperty -Path {$_.PSParentPath} -Name '(default)' -Value $menu -PassThru |
Set-ItemProperty -Name HasLUAShield -Value ''
}
答
发现如果你想避免空间问题,你可以通过在字符串`逃脱它重用"
。
例如:
$command = "Set-Location `"C:\temp\test space`""
字符串将成为本和空间将被正确处理:
Set-Location "C:\temp\test space"
也许我是不是在这个问题清楚了,不好意思。我的问题是%V路径中的空格,Powershell可执行文件很好。我尝试在%V周围放置'',但仍然收到错误。 – Spanner1122
确切的错误是什么?你是否把''放在''的周围? – Manu
我已经更新了上面的问题,以包含修改后使用的错误和完整命令。 – Spanner1122