ファイル名と拡張子を抽出する必要があります。 my.file.xlsx。私はファイルや拡張子の名前を知らないし、名前の中にさらにドットがあるかもしれないので、右から文字列を検索する必要があります。そして、最初のドット(または最後から最後)を見つけたら、その点から左側にある部分との間に位置する。powershell - ファイル名と拡張子を抽出します。
もっと良い解決策があるかもしれませんが、私はここや他の場所で何かを見つけませんでした。
ファイル名と拡張子を抽出する必要があります。 my.file.xlsx。私はファイルや拡張子の名前を知らないし、名前の中にさらにドットがあるかもしれないので、右から文字列を検索する必要があります。そして、最初のドット(または最後から最後)を見つけたら、その点から左側にある部分との間に位置する。powershell - ファイル名と拡張子を抽出します。
もっと良い解決策があるかもしれませんが、私はここや他の場所で何かを見つけませんでした。
ファイルがディスクをオフに来ていると他の人のように述べている場合は、BaseName
とExtension
プロパティを使用します。あなたは、文字列の一部としてファイル名を与えられている場合(たとえば、テキストファイルからの
PS C:\> dir *.xlsx | select BaseName,Extension
BaseName Extension
-------- ---------
StackOverflow.com Test Config .xlsx
を誰でも好奇心旺盛である場合、これは、適応したものです
PS C:\> [System.IO.Path]::GetFileNameWithoutExtension("Test Config.xlsx")
Test Config
PS H:\> [System.IO.Path]::GetExtension("Test Config.xlsx")
.xlsx
System.IO.Pathクラスのより便利なメソッドについては、MSDNのドキュメントを参照することなく、 '[System.IO.Path] | Get-Member -Static' – Phil
'[System.IO.Path] :: GetExtension'は、ピリオド("。 ")*を含む拡張子*を返します。 –
テキストファイルからのものであり、そして名前のファイルを想定している場合は、この方法で空白に囲まれてありがとう:
$a = get-content c:\myfile.txt
$b = $a | select-string -pattern "\s.+\..{3,4}\s" | select -ExpandProperty matches | select -ExpandProperty value
$b | % {"File name:{0} - Extension:{1}" -f $_.substring(0, $_.lastindexof('.')) , $_.substring($_.lastindexof('.'), ($_.length - $_.lastindexof('.'))) }
、あなたのニーズに基づいて、このようなものを使用することができますファイルの場合:
$a = dir .\my.file.xlsx # or $a = get-item c:\my.file.xlsx
$a
Directory: Microsoft.PowerShell.Core\FileSystem::C:\ps
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 25/01/10 11.51 624 my.file.xlsx
$a.BaseName
my.file
$a.Extension
.xlsx
FileInfoオブジェクトのBaseNameプロパティとExtensionプロパティを確認します。
任意の特定のinfoyou'reの後に?ファイルをGet-Memberにパイプして、すべてのメンバーを公開するか、MSDNを参照して公式のヘルプを探してください。 –
:)、私はSystem.IO.PathクラスからGetFileNameWithoutExtension
とGetExtension
静的メソッドを使用します。
$Comp = get-content c:\myfile.txt
ForEach ($PC in $Comp) {
dir "\\$PC\Folder\Share\*.*" | Select-Object $_.BaseName
}
ニースとシンプルな
、そしてそれは、ディレクトリとその中のファイルを示しています。私はrobocopyをが正常にその完全性のために複数のサーバーにあるファイルをコピーしたかどうかをテストする必要がありました。 1つのファイル名または拡張子を指定する場合は、*を必要なものに置き換えます。
Directory: \\SERVER\Folder\Share
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/27/2015 5:33 PM 1458935 Test.pptx
PS C:\Windows\System32\WindowsPowerShell\v1.0>split-path "H:\Documents\devops\tp-mkt-SPD-38.4.10.msi" -leaf
tp-mkt-SPD-38.4.10.msi
PS C:\Windows\System32\WindowsPowerShell\v1.0> $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.5477
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
PS C:\Users\joshua> $file = New-Object System.IO.FileInfo('file.type')
PS C:\Users\joshua> $file.BaseName, $file.Extension
file
.type
使用分割経路
$filePath = "C:\PS\Test.Documents\myTestFile.txt";
$fileName = (Split-Path -Path $filePath -Leaf).Split(".")[0];
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1];
ちょうどそれを実行します。
$file=Get-Item "C:\temp\file.htm"
$file.Name
$file.Extension
エキステキストファイルからか、何から? –
こんにちはキリスト教徒、私は私の質問を更新しました。私はファイルの名前からそれを抽出する必要があります。ありがとうございます – culter