求根据记事本提供的内容,自动更名的软件

查看 46|回复 5
作者:dreamlife1979   
一个文件夹有几千个文件和一个记事本格式的书表,几千个文件原来用数字命名,所有数字都能在记事本找到匹配的名字。
所有新文件命名规则:年_书名_isbn
比如:
原来文件名:
[color=]63923
   自动匹配记事本内容更改后的名字为:
[color=]2024_网络营销_9787115639233
原来文件名:
[color=]62251
  自动匹配记事本内容更改后的名字为:
[color=]2024_汽车、赛车及特种车辆 线稿插画资料集_9787115622518
目前有哪个重命名的软件能实现这样的功能?如果没有,烦请大神写个批处理程序,谢谢!
书表下载:
链接:https://pan.baidu.com/s/1LRUq1N4t3FTTfuuFEuiekg?pwd=hbvu
提取码:hbvu
软件收集:
大家好,在此收集重命名软件
有效期截止到2024年11月11日15:01,麻烦在此之前点击以下链接将文件发送给我,支持发送任意格式的文件,感谢~
链接:https://pan.baidu.com/disk/main#/transfer/send?surl=AAcAAAAAABLYUQ

记事本, 文件

pandagg   

上传好了,将bat脚本放到这个文件夹内,双击运行
Satifer   

已上传,莫辜负。当前文件夹下双击运行即可
dreamlife1979
OP
  


pandagg 发表于 2024-11-4 15:42
上传好了,将bat脚本放到这个文件夹内,双击运行

兄弟,无法改名,文件夹的文件还是没有变化,
运行批处理文件,生成temp_book_data。里面要改名的一点没有变化。
dreamlife1979
OP
  


pandagg 发表于 2024-11-4 15:42
上传好了,将bat脚本放到这个文件夹内,双击运行

批处理无法自动改名,运行程序提示:
Active code page:65001
重命名中,请耐心等待。。。
文件重命名完成
Press any key to continue。。。
文件夹的文件名没有变化,增加temp_book_data这个文件
chinaarchy   

为了实现这个需求,我们可以编写一个PowerShell脚本来完成以下任务:
1. 读取记事本文件中的内容。
2. 遍历指定目录中的所有文件。
3. 根据记事本中的映射关系重命名文件。
假设记事本文件的格式如下:
```
63923,网络营销,9787115639233
62251,汽车、赛车及特种车辆 线稿插画资料集,9787115622518
```
以下是实现该功能的PowerShell脚本:
```powershell
# 指定要处理的目录和记事本文件路径
$directory = "C:\Path\To\Your\Directory"
$notebookFile = "C:\Path\To\Your\Notebook.txt"
# 读取记事本文件内容并解析成字典
$mapping = @{}
Get-Content $notebookFile | ForEach-Object {
    $parts = $_ -split ','
    if ($parts.Count -eq 3) {
        $mapping[$parts[0]] = @{
            BookName = $parts[1]
            ISBN = $parts[2]
        }
    }
}
# 获取目录中的所有文件
$files = Get-ChildItem -Path $directory
foreach ($file in $files) {
    # 提取文件名中的数字部分
    $oldName = $file.BaseName
    if ($mapping.ContainsKey($oldName)) {
        $bookInfo = $mapping[$oldName]
        $newName = "2024_${bookInfo.BookName}_${bookInfo.ISBN}${file.Extension}"
        
        # 构建新的文件路径
        $newFilePath = Join-Path -Path $directory -ChildPath $newName
        
        # 重命名文件
        Rename-Item -Path $file.FullName -NewName $newName -WhatIf
    } else {
        Write-Host "No mapping found for file: $oldName"
    }
}
```
### 如何使用这个脚本
1. 打开记事本或其他文本编辑器,将上述脚本粘贴进去。
2. 修改脚本中的`$directory`变量为你想要操作的目录路径。
3. 修改脚本中的`$notebookFile`变量为记事本文件的路径。
4. 保存文件为`.ps1`扩展名,例如`RenameFiles.ps1`。
5. 打开PowerShell(可以通过在开始菜单搜索“PowerShell”来启动)。
6. 在PowerShell中,导航到包含脚本的目录,例如:
   ```powershell
   cd "C:\Path\To\Script"
   ```
7. 运行脚本,但在实际执行前,可以先加上`-WhatIf`参数来查看将会发生什么更改,而不实际执行任何操作:
   ```powershell
   .\RenameFiles.ps1
   ```
8. 如果一切看起来都正确,你可以移除`-WhatIf`参数再次运行脚本以应用更改:
   ```powershell
   .\RenameFiles.ps1
   ```
### 注意事项
- 记事本文件的格式必须是 `数字,书名,ISBN`,每一行对应一个文件。
- 脚本中的`-WhatIf`参数可以让你预览将要执行的操作,确保安全后再移除该参数。
- 请确保在运行脚本之前备份重要文件,以防万一出现意外情况。
- 该脚本默认不会处理子目录中的文件。如果你想包括子目录中的文件,可以在`Get-ChildItem`命令后加上`-Recurse`参数。
- 如果文件名包含非英文字符,确保PowerShell的编码设置正确,以免出现乱码问题。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部