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

时间:2015-02-11 14:34:33

标签: string powershell filenames

我经常想做类似的事情:

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

但如果我现在看看栏中的字符串,他们看起来像这样:

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

因为我知道装饰有多长,我可以手动获取子串。但这看起来很糟糕 - 是否有办法将路径部分作为字符串?

编辑:根据一些问题说明另一个类似的问题,如果我这样做:

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

我明白了:

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

我正在对这些文件名进行大量操作,以便在不同的CM存储库之间进行迁移。我在想'如果我能把整个路径变成一个字符串'......

这是我第一次认真进入PS。所以也许我的心态是错的。

2 个答案:

答案 0 :(得分:4)

一些快速方法,全部使用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

答案 1 :(得分:0)

@ arco444给了我遗失的一块。要获得文件名为字符串的完整路径,我能想到的最简单的事情是:

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

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