在PowerShell中将字符串转换为目录对象

时间:2015-10-22 12:49:46

标签: powershell powershell-v4.0

我从文件中逐行读取字符串(使用Get-Content和foreach循环),我想将这些字符串转换为目录对象(以便我可以访问.FullName等属性)。如何轻松地从字符串转换为目录?

使用文件很简单:$myFileAsFile = $myFileAsStr | dir $_但是,如何获得$directoryAsString的目标?

5 个答案:

答案 0 :(得分:10)

您可以使用.Net class System.IO.FileInfoSystem.IO.DirectoryInfo。即使目录不存在,这也会起作用:

$c = [System.IO.DirectoryInfo]"C:\notexistentdir"
$c.FullName

它甚至可以使用文件:

$c = [System.IO.DirectoryInfo]"C:\some\file.txt"
$c.Extension

所以要检查它是否真的是一个目录使用:

$c.Attributes.HasFlag([System.IO.FileAttributes]::Directory)

以下评论中有System.IO.FileInfo的示例。

答案 1 :(得分:9)

好的,答案似乎是Get-Item

$dirAsStr = '.\Documents'
$dirAsDir = Get-Item $dirAsStr
echo $dirAsDir.FullName

作品!

答案 2 :(得分:1)

因此,从字符串类型变量获取路径/完整路径的简单方法始终对我有用:

(Resolve-Path $some_string_var)

Set-Variable -Name "str_path_" -Value "G:\SO_en-EN\Q33281463\Q33281463.ps1"

$fullpath = $(Resolve-Path $some_string_var) ; $fullpath

答案 3 :(得分:0)

Get-item将根据输入输出一个fileinfo或directoryinfo对象。或通过管道传输到get-item -path { $_ }

$myFileAsFile = get-item $myFileAsStr
$directoryAsDir = get-item $directoryAsString

答案 4 :(得分:-1)

$(Get-Item $ directoryAsString).FullName