删除部分文件名

时间:2016-11-24 10:32:57

标签: powershell rename

我想在特定字符后删除部分文件名。我环顾四周但似乎无法找到合适的答案。 每个文件名都是唯一期望的 - 在中间。

当前文件名;

somefilename - somefilenamewithmore
somefilename123 - somefilenamewithmore123
somefilename5555 - somefilenamewithmore5555

我想要的是什么;

somefilename 
somefilename123 
somefilename5555 


前导参考文件位于C:\users\%username%\rename

我发现了很多关于删除特定数量的字符或从文件名中删除特定内容的信息,但没有任何运气试图删除某个字符后的所有内容。

非常感谢任何帮助/指示

3 个答案:

答案 0 :(得分:2)

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

可选地,如果有扩展名(如.pdf或其他),您可以将其编辑为:

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

另外,我不确定你是否想要当前的用户名,所以我最初离开了你的路径,但是人们编辑了那部分,也许这种方式更有意义,我不确定;)< / p>

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

此处使用$env:USERPROFILE确定路径的解决方案:

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