在Windows操作系统中,使用powershell脚本批量删除、批量替换文件名

比如我们下载的mp3文件或者小说、评书里都带很多作者、网站等信息,如何批量一键删除掉多余的字段呢?

下面举例:批量删除文件名称

可以看到原文中,所有文件名中均包含"小番茄与火龙果-"这字段,我的目标是删除这部分字段,保留其他。

powershell脚本为(最好管理员运行)

# 指定源文件夹的路径 "D:\a"
$sourceFolder = "D:\a"

# 获取源文件夹中的所有 mp3 文件,以"小番茄与火龙果-"开头的mp3文件,“*”代表任意数量字符
$mp3Files = Get-ChildItem -Path $sourceFolder -Filter "小番茄与火龙果-*.mp3"

# 循环处理每个文件并重命名
foreach ($file in $mp3Files) {
# 删除 "小番茄与火龙果-" 字段,其实这里是替换为"空",因此是删除了
    $newFileName = $file.Name -replace "小番茄与火龙果-", ""
    $newFilePath = Join-Path -Path $sourceFolder -ChildPath $newFileName
    Rename-Item -Path $file.FullName -NewName $newFileName
}

$newFileName = $file.Name -replace "小番茄与火龙果-", ""

脚本中这段代码,其实这里是将"小番茄与火龙果-"  替换  为   "空"  ,如果你想替换为”故事“,可以这样操作

$newFileName = $file.Name -replace "小番茄与火龙果-", "故事"

 

在powershell里直接执行后的截图(是管理员运行)

我们返回到 ”D:\a“目录下,看到文件名已经批量被删除掉"小番茄与火龙果-"的开头字段

这里有个小插曲,在删除这里时,遇到了困难

我要删除“蔬菜警长·常规故事·”的时候,发现powershell里是无法输入这个 · 符号的,复制粘贴等,都不可以,原生不支持

针对这种无法使用的特殊符号 · 之类的需求,可以使用字符串替换方法。由于 PowerShell 中可以处理 Unicode 字符,您可以直接使用中文字符 · 进行替换。

$sourceFolder = "D:\a"

$mp3Files = Get-ChildItem -Path $sourceFolder -Filter "*.mp3"

foreach ($file in $mp3Files) {
    $newFileName = $file.Name -replace "[\u00b7]", ""
    $newFilePath = Join-Path -Path $sourceFolder -ChildPath $newFileName
    Rename-Item -Path $file.FullName -NewName $newFileName
}

因此我通过查询Unicode字符对照表[\u00b7],干掉了 · 字符

posted @ 2023-07-23 20:11  Magiclala  阅读(804)  评论(0编辑  收藏  举报