以下のパスからファイル名を抽出したい:
D:\ Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv
今、私はファイル名を取得するためにこのコードを書きました。これは、フォルダーレベルが変更されない限り正常に機能します。ただし、フォルダレベルが変更された場合は、このコードを書き換える必要があります。フォルダーレベルに関係なく、コードが常にファイル名を抽出できるように、より柔軟にする方法を探しています。
($outputFile).split('\')[9].substring(0)
拡張機能を含めることに問題がなければ、これはあなたが望むことをするはずです。
$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$outputFile = Split-Path $outputPath -leaf
。net を使用します。
[System.IO.Path]::GetFileName("c:\foo.txt")
はfoo.txt
を返します。 [System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
はfoo
を返します
Get-ChildItemでBaseNameを使用すると、ファイルの名前が表示され、Nameを使用すると、拡張子付きのファイル名が表示されます。
$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf"
$filepath.BaseName
Basic-English-Grammar-1
$filepath.Name
Basic-English-Grammar-1.pdf
このようにして、望む結果を得ることができます。
$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
$a = $file.Split("\")
$index = $a.count - 1
$a.GetValue($index)
「Get-ChildItem」を使用して「fullname」を取得する場合、「name」を使用してファイルの名前を取得することもできます。
上記の回答を完了するには、.Netを使用します。
このコードでは、パスは%1
引数(エスケープされた引用符でレジストリに書き込まれます:\"%1\"
)に格納されます。それを取得するには、$arg
(組み込み引数)が必要です。 $FilePath
を囲む引用符を忘れないでください
# Get the File path:
$FilePath = $args
Write-Host "FilePath: " $FilePath
# Get the complete file name:
$file_name_complete = [System.IO.Path]::GetFileName("$FilePath")
Write-Host "fileNameFull :" $file_name_complete
# Get File Name Without Extension:
$fileNameOnly = [System.IO.Path]::GetFileNameWithoutExtension("$FilePath")
Write-Host "fileNameOnly :" $fileNameOnly
# Get the Extension:
$fileExtensionOnly = [System.IO.Path]::GetExtension("$FilePath")
Write-Host "fileExtensionOnly :" $fileExtensionOnly
Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name
$(分割パス "D:\ Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" -leaf)