Python 用于重命名文件夹中的文件以匹配其他文件夹中的文件名的脚本

Python 用于重命名文件夹中的文件以匹配其他文件夹中的文件名的脚本,python,regex,batch-file,rename,Python,Regex,Batch File,Rename,在以下情况下,我需要进行批量重命名: 我在文件夹a里有一堆文件 文件夹B中的一堆文件 文件夹A中的文件都是“.doc” 文件夹B中的文件都是“.jpg” 文件夹A中的文件名为“A0001.doc” 文件夹B中的文件名为“A0001johnsmith.jpg” 我想合并文件夹,并重命名文件夹A中的文件,以便它们将匹配文件的名称部分附加到文件夹B中 例如: 之前: FOLDER A: Folder B: A0001.doc A0001johnsmith.jpg 之后: Folder

在以下情况下,我需要进行批量重命名:

  • 我在文件夹a里有一堆文件
  • 文件夹B中的一堆文件
  • 文件夹A中的文件都是“.doc”
  • 文件夹B中的文件都是“.jpg”
  • 文件夹A中的文件名为“A0001.doc”
  • 文件夹B中的文件名为“A0001johnsmith.jpg”
  • 我想合并文件夹,并重命名文件夹A中的文件,以便它们将匹配文件的名称部分附加到文件夹B中

    例如:

    之前:

    FOLDER A:     Folder B:
    A0001.doc     A0001johnsmith.jpg
    
    之后:

    Folder C:
    A0001johnsmith.doc 
    A0001johnsmith.jpg
    
    我见过一些批重命名脚本,但唯一的区别是我需要分配一个变量来包含名称部分,以便将其附加到文件夹a中相应文件的末尾

    我认为最好的方法是编写一个简单的python脚本,执行递归循环,对文件夹中的每个项目进行如下操作:

  • 解析A0001.doc的文件名
  • 将字符串与文件夹B中的文件名匹配
  • 取字符串后面匹配但在“.”之前的部分,并分配变量
  • 获取原始字符串A0001并附加包含name元素的变量并重命名它
  • 将两个文件复制到文件夹C(非破坏性,以防出错等)

  • 我曾考虑使用python实现这一点,但我可以在语法等方面获得一些帮助。我只知道一点基本python库的用法,我猜我会导入诸如“OS”和“SYS”之类的库。我以前从未使用过,如有任何帮助,将不胜感激。我也愿意使用windows批处理脚本甚至powershell。任何输入都是有帮助的。

    这是Powershell,因为您说过要使用它

    请注意,我没有测试这个。我现在无法访问Windows计算机,因此无法测试它。我是基于记忆,但我认为基本上是正确的

    foreach($aFile in ls "/path/to/FolderA")
    {
        $matchString = $aFile.Name.Split("."}[0]
        $bFile = $(ls "/path/to/FolderB" |? { $_.Name -Match $matchString })[0]
        $addString = $bFile.Name.Split(".")[0].Replace($matchString, "")
        cp $aFile ("/path/to/FolderC/" + $matchString + $addString + ".doc")
        cp $bFile "/path/to/FolderC"
    }
    

    这对名称结构做了很多假设。例如,我假设要添加的字符串没有出现在公共文件名字符串中。

    使用普通批处理脚本非常简单

    @echo off
    for %%A in ("folderA\*.doc") do (
      for %%B in ("folderB\%%~nA*.jpg") do (
        copy "%%A" "folderC\%%~nB.doc"
        copy "%%B" "folderC"
      )
    )
    
    我没有添加任何错误检查

    如果像“A1.doc”这样的文件与像“A1file1.jpg”和“a1file2.jpg”这样的多个文件相匹配,则可能会出现问题

    只要.doc文件有固定宽度的名称,并且每个.doc都有一个.jpg,那么我认为代码应该可以工作

    显然,可以添加更多代码来处理各种场景和错误条件