(Get-Contentとforeachループを使用して)ファイルから文字列を1行ずつ読み取り、それらの文字列をディレクトリオブジェクトに変換したいと思います(.FullName
などのプロパティにアクセスできるようにするため)。文字列からディレクトリに簡単に変換するにはどうすればよいですか?
ファイルを使用すると簡単です:$myFileAsFile = $myFileAsStr | dir $_
しかし、$directoryAsString
の目標を取得するにはどうすればよいですか?
さて、答えはGet-Item
のようです:
$dirAsStr = '.\Documents'
$dirAsDir = Get-Item $dirAsStr
echo $dirAsDir.FullName
動作します!
.Netクラス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
の例があります。
Get-itemは、入力に応じてfileinfoまたはdirectoryinfoオブジェクトを出力します。または、get-item -path { $_ }
にパイプします。
$myFileAsFile = get-item $myFileAsStr
$directoryAsDir = get-item $directoryAsString