Powershell 文件和目录名称为字符串,无装饰

Powershell file and directory names as strings, sans decorations

我经常想做这样的事情:

 $foo=ls foo.txt|select FullName
 $bar=$foo.split("\");  #  or replace or some such

但是如果我现在查看 bar 中的字符串,它们看起来像这样:

 @{FullName=C:\path\to\foo.txt}

因为我知道装饰品有多长,所以我可以手动获取子字符串。但这似乎很老套 - 有没有办法将路径部分作为字符串获取?

编辑:为了说明另一个类似的问题,基于一些问题,如果我这样做:

 $foo -replace("\","/")

我得到:

 @{FullName=C:/src/tss/THSS-Deployment-Config/foo.txt}

我正在对这些文件名进行大量操作,以便在不同的 CM 存储库之间进行迁移。我在想 'if I could just get the whole path as a string'...

这是我第一次正式进入 PS。所以也许我的心态是错误的。

一些快速方法,全部使用非常适合此的 Split-Path cmdlet:

$foo= ls foo.txt | select FullName
$bar = Split-Path $foo.fullname

或者:

$foo= ls foo.txt | select -ExpandProperty FullName
$bar = Split-Path $foo

或更短:

$bar = Split-Path (gci foo.txt).fullname

@arco444 给了我丢失的部分。要获取文件名作为字符串的完整路径,我能想到的最简单的方法是:

 $bar=(Split-Path $foo.FullName) +"\"+ (Split-Path $foo -leaf)

我不确定是否有更简单的方法将整个路径合并为一个字符串。