powershell 删除文件名的一部分

xn1cxnb4  于 2022-11-10  发布在  Shell
关注(0)|答案(3)|浏览(181)

我正在尝试删除文件名中特定字符之后的一部分。我环顾了四周,但似乎找不到合适的答案。除中间的-外,每个文件名都是唯一的。

当前文件名;

somefilename - somefilenamewithmore
somefilename123 - somefilenamewithmore123
somefilename5555 - somefilenamewithmore5555

我想要的样子;

somefilename 
somefilename123 
somefilename5555

引用文件位于C:\users\%username%\rename
我已经找到了很多关于删除特定数量的字符或从文件名中删除特定内容的信息,但没有任何运气尝试删除某个字符之后的所有内容。
如有任何帮助/指点,我们将不胜感激

2wnc66cl

2wnc66cl1#

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)

另外,我不确定你是否想要当前的用户名,所以我最初没有改变你的路径,但人们编辑了这一部分,也许这样更有意义,我不确定;)

t1rydlwq

t1rydlwq2#

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

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

mwg9r5ms3#

以下是使用regex$env:USERPROFILE确定路径的解决方案:

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

相关问题