2017-10-19 78 views
0

我目前试图创建一个开放从右键上下文菜单管理员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 '' 
} 

答案是从How do I start PowerShell from Windows Explorer?

回答

1

发现如果你想避免空间问题,你可以通过在字符串`逃脱它重用"

例如:

$command = "Set-Location `"C:\temp\test space`"" 

字符串将成为本和空间将被正确处理:

Set-Location "C:\temp\test space"

+0

也许我是不是在这个问题清楚了,不好意思。我的问题是%V路径中的空格,Powershell可执行文件很好。我尝试在%V周围放置'',但仍然收到错误。 – Spanner1122

+0

确切的错误是什么?你是否把''放在''的周围? – Manu

+0

我已经更新了上面的问题,以包含修改后使用的错误和完整命令。 – Spanner1122