首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从PowerShell中的path变量中删除双引号

从PowerShell中的path变量中删除双引号
EN

Stack Overflow用户
提问于 2021-02-28 04:07:51
回答 2查看 380关注 0票数 0

我使用的是PowerShell 5.1。

我有一个从注册表检索HKLM:\SYSTEM\CurrentControlSet\Services\ImagePath值的脚本。获取返回值的字符串如下所示:

"C:\Program Files\Dir1\Dir2"

请注意,双引号是字符串的一部分。

我需要获取此字符串表示的路径的父目录。我尝试了Split-Path,但这会在返回值中留下前导双引号,这会导致Test-Path在一个确实存在的目录上返回false。例如,

为了解决这个问题,我尝试使用Trim()调用删除所有前导或尾部双引号,但这似乎只删除了前导双引号,即尾部双引号保留不变。根据我在C#中使用String.Trim()的经验,这看起来像是一个bug。

唯一有效的方法是将双引号替换为空字符串,如下所示:

然而,这对我来说就是感觉不对劲。在这种情况下,如果路径不能有双引号,即双引号字符是非法的路径变量,它就会起作用。但是,如果返回的注册表值在字符串中合法地包含双引号,该怎么办?这种粗暴的方法将删除双引号。

我对PowerShell还很陌生,所以我很可能忽略了一些不需要使用Replace()调用就能完成我想做的事情的地方。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-28 05:09:30

您所描述的尾随引号未删除意味着引号后面有一些看不见的字符,比如空格。

也可以使用Trim('“')或将两个Trim链接在一起,如下所示

第一个删除字符串两边的所有空格字符(不仅是空格,还有制表符、换行符等),第二个删除引号。

附注:我们不能确切地看到你的函数做了什么,但也许你可以使用PowerShell自己的Get-ItemPropertyValue来做这件事?

票数 1
EN

Stack Overflow用户

发布于 2021-02-28 04:36:02

如果引用是固定的,您可以使用TrimEnd

否则你可以像这样做检查

如果有人有更好的方法,我很想看看,因为我从一段时间以来一直来自于powershell

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66403041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档