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)
我不确定是否有更简单的方法将整个路径合并为一个字符串。
我经常想做这样的事情:
$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)
我不确定是否有更简单的方法将整个路径合并为一个字符串。