gpt4 book ai didi

powershell - 从文件名中删除无关的字符

转载 作者:行者123 更新时间:2023-12-03 10:05:04 25 4
gpt4 key购买 nike

我的任务有点超出我的理解范围,即获取文件存储库并从文件名中删除多余的垃圾字符并将重命名的文件保存在不同的目录文件夹中。

文件名的一个例子是:

100-expresstoll.pdf1000-2012-09-29.jpg10000-2014-01-15_14.03.22.jpg10001-2014-01-15_19.05.24.jpg10002-2014-01-15_21.30.23.jpg10003-2014-01-16_07.33.54.jpg10004-2014-01-16_13.33.21.jpg10005-Feb 4, 2014.jpeg10006-O'Reilly_Media,_Inc..pdf

开头的第一组数字是记录 ID,将与文件的扩展名一起保留。记录 ID 和文件扩展名之间的所有其他内容都需要删除。

例如,前三个文件的最终名称为:

100.pdf1000.jpg10000.jpg

我已阅读 Removing charactersRearranging filenames除了其他帖子之外,但前面具有可变字符长度、要删除的可变数量的中间字符和可变文件扩展名类型的复杂性确实超出了我有限的 PowerShell 范围。

最佳答案

另一种没有正则表达式的方法。在以下两个示例中,都使用风险缓解参数 -WhatIf 进行调试。

重命名文件:

Get-ChildItem -File | ForEach-Object {
$oldFile = $_.FullName
$newName = $_.BaseName.Split('-')[0] + $_.Extension
if ($_.Name -ne $newName) {
Rename-Item -Path $oldFile -NewName $newName -WhatIf
}
}

重命名和移动文件:

$newDest = 'D:\test'                       ### change to fit your circumstances
Get-ChildItem -File | ForEach-Object {
$oldFile = $_.FullName
$newName = $_.BaseName.Split('-')[0] + $_.Extension
$newFile = Join-Path -Path $newDest -ChildPath $newName
if ( -not ( Test-Path -Path $newFile ) ) {
Move-Item -Path $oldFile -Destination $newFile -WhatIf
}
}

关于powershell - 从文件名中删除无关的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com