dreamlife1979 发表于 2024-11-4 15:02

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

一个文件夹有几千个文件和一个记事本格式的书表,几千个文件原来用数字命名,所有数字都能在记事本找到匹配的名字。

所有新文件命名规则:年_书名_isbn
比如:
原来文件名:63923   自动匹配记事本内容更改后的名字为:2024_网络营销_9787115639233
原来文件名:62251自动匹配记事本内容更改后的名字为: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 发表于 2024-11-4 15:02

dreamlife1979 发表于 2024-11-4 21:30
兄弟,无法改名,文件夹的文件还是没有变化,

运行批处理文件,生成temp_book_data。里面要改名的一点 ...

已经重新上传了脚本,脚本名称是:批量重命名书名V2_作者pandagg.bat,将脚本放在同个文件夹内,双击执行,如解决请采纳,谢谢!

pandagg 发表于 2024-11-4 15:42

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

Satifer 发表于 2024-11-4 16:02

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

dreamlife1979 发表于 2024-11-4 21:30

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

兄弟,无法改名,文件夹的文件还是没有变化,

运行批处理文件,生成temp_book_data。里面要改名的一点没有变化。

dreamlife1979 发表于 2024-11-4 21:34

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

批处理无法自动改名,运行程序提示:
Active code page:65001
重命名中,请耐心等待。。。
文件重命名完成
Press any key to continue。。。

文件夹的文件名没有变化,增加temp_book_data这个文件

chinaarchy 发表于 2024-11-5 00:31

为了实现这个需求,我们可以编写一个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] = @{
            BookName = $parts
            ISBN = $parts
      }
    }
}

# 获取目录中的所有文件
$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的编码设置正确,以免出现乱码问题。

jyjjf 发表于 2024-11-5 07:17

可以试试结合excel版的重命名文件工具来进行,因为excel方便匹配核对

dreamlife1979 发表于 2024-11-5 07:43

chinaarchy 发表于 2024-11-5 00:31
为了实现这个需求,我们可以编写一个PowerShell脚本来完成以下任务:

1. 读取记事本文件中的内容。


记事本文件格式已经上传到百度网盘,格式好像无法满足你的要求。能编辑一个可运行批处理程序么?放在文件夹里,文件夹的所有文件命名根据记事本里的内容来命名。谢谢

Broadm 发表于 2024-11-5 10:30

你这个有点复杂, 我看了 书表.txt 里面的格式不标准, 不能简单的根据逗号分隔, 里面的name有的还包含逗号,双引号等等{:1_937:} 我来试试吧
页: [1] 2
查看完整版本: 求根据记事本提供的内容,自动更名的软件