ファイルのパス名の最後の部分だけを取得する必要があります。PowerShellを使用してsplit-pathからファイルの最下位ディレクトリ名を取得する
例:
c:\dir1\dir2\dir3\file.txt
私は変数にDIR3取得する必要があります。
私はスプリットパスで試してきましたが、それは私に全体のパスを与えます。
ファイルのパス名の最後の部分だけを取得する必要があります。PowerShellを使用してsplit-pathからファイルの最下位ディレクトリ名を取得する
例:
c:\dir1\dir2\dir3\file.txt
私は変数にDIR3取得する必要があります。
私はスプリットパスで試してきましたが、それは私に全体のパスを与えます。
これはSplit-Path
AFAICTの2つの呼び出し取ります
"c:\dir1\dir2\dir3\file.txt".split("\")[-2]
ありがとう!私の場合、-Leafを2回指定する必要がありました。あなたが書いた括弧の中にも--Parent、私の場合は最も内側のフォルダ名が必要でしたが、私のパスにはファイル名、フォルダだけが含まれていました。 –
ありがとう!私の似ていた!私の場合は、<(Split-Path "\\ usa0xxxnas.na.xxx.net \ xxxbackups \ T_SQL_Web_Prod \" -leaf)>を使用して、T_SQL_Web_Prodディレクトリを取得しました。 – Michele
を、パスが通常の形であることを行っている、あなたはString.Split()
を使用することができますSystem.Uriを使用するオプション:
PS> ([uri]"c:\dir1\dir2\dir3\file.txt").segments[-2].trim('/')
dir3
ファイルが存在する場合ディスク上:
PS> (dir c:\dir1\dir2\dir3\file.txt).directory.name
別:あなたは、単純な、それを維持したい場合は
PS> Split-Path (Split-Path c:\dir1\dir2\dir3\file.txt -Parent) -Leaf
dir3
+1元のパスの最初の2つのディレクトリのみを含むパスを取得する必要があり、 '([uri]" c:\ dir1 \ dir2 \ dir3 \ file.txt "を使用して、 ).segments [1..3] -join "" 'これは' c:\ dir1 \ dir2'を返します。ありがとうございました! –
この質問は具体的にはそう分割経路を求めているが、他のいくつかの方法があります。
ファイルが存在する場合、私はそれを行うには非常に良くある見つける:
(Get-Item c:\dir1\dir2\dir3\file.txt).Directory.Name
ファイルが存在しない場合、これは機能しません。あなたは、私が(オリジナルのアイデアのためにシェイ・レヴィのおかげで)これを使用して、あなたがいるディレクトリの名前をしたい場合は、一般的には
$path = [System.IO.Path];
$path::GetFileName($path::GetDirectoryName("c:\dir1\dir2\dir3\file.txt"))
:その場合のもう一つの方法は、たとえば、.NETのAPIを使用することです:
PS>(DIR).directory.name [0]
https://devcentral.f5.com/weblogs/joe/archive/2009/05/04/unix-to-powershell--- basename.aspx – mhitza