2016-11-24 16 views
1

特定の文字の後にファイル名の一部を削除しようとしています。私は周りを見てきましたが、適切な答えを見つけることができないようです。 各ファイル名は一意であり、真ん中に - があります。ファイル名の一部を削除する

現在のファイル名。私はそれになりたい何

somefilename - somefilenamewithmore 
somefilename123 - somefilenamewithmore123 
somefilename5555 - somefilenamewithmore5555 

somefilename 
somefilename123 
somefilename5555 


フォア参照ファイルはC:\users\%username%\rename

に位置している私は、特定の文字数を削除するか、ファイル名から特定のものを削除しますが、削除しようとしているすべての運を持っていない上での情報の多くを発見しましたすべての特定の文字の後に。また、

Rename-Item -Path $_.FullName -NewName ($_.Name.Split(' ')[0] + $_.Extension) 

すべてのヘルプ/ポインタが大幅

答えて

2
Get-ChildItem C:\users\$env:username\rename -file | foreach { 
    Rename-Item -Path $_.FullName -NewName ($_.Name.Split(' ')[0]) } 

オプションをいただければ幸いです、(PDFファイルまたは任意のような)拡張機能があります場合は、にそれを編集することができます私はあなたが現在のユーザー名を望んでいるかどうか分からないので、元々あなたのパスをそのまま残していましたが、人々はその部分を編集しました。おそらくそれはもっと理にかなっています;)

ここ
+0

%ユーザ名、あなたはおそらく '$ ENVのと交換したいと思います。しかし、まだ有効な答えは、このようにupvoted。 –

+0

まあ、彼が現在のユーザーや他のユーザーを指しているのかどうかは分かりません。だから私はそれをそのままにしておきました。 – 4c74356b41

+0

ありがとうございました。私はいくつかのファイル名が角括弧を持っていたので少し変更を加えなければならなかったので、私はPathを-LiteralPathに変更しました。 –

1
$files = @(
    "somefilename - somefilenamewithmore", 
    "somefilename123 - somefilenamewithmore123" 
    "somefilename5555 - somefilenamewithmore5555" 
) 

$files | %{ 
    $_.Split("-")[0].Trim() 
} 
1

パスを決定するために$env:USERPROFILEを用いて溶液:username`:%はここで働いていないだろう

Get-ChildItem (Join-Path $env:USERPROFILE 'rename') -file | ForEach-Object { 
    Rename-Item -Path $_.FullName -NewName ('{0}{1}' -f ($_.Name -replace '([^-]*).*', '$1'), $_.Extension) } 
+0

あなたのクレイジー正規表現;))) – 4c74356b41

関連する問題