我从文件中逐行读取字符串(使用Get-Content和foreach循环),我想将这些字符串转换为目录对象(以便我可以访问.FullName
等属性)。如何轻松地从字符串转换为目录?
使用文件很简单:$myFileAsFile = $myFileAsStr | dir $_
但是,如何获得$directoryAsString
的目标?
答案 0 :(得分:10)
您可以使用.Net class System.IO.FileInfo
或System.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