0

我需要重命名很多文件。

我有 1 个包含 270 个 PDF 文件的 zip 文件,这些文件的名称不好,例如 {4E92C2C7-0A9B-4F77-99CC-D1F03B871564}.pdf 我还有一个带有两个列的索引 pdf 文件,1 个带有文件名,另一个带有简短描述.

示例:Airol 1 升 (Airol) (Sikkerhetsdatablad) = {4E92C2C7-0A9B-4F77-99CC-D1F03B871564}.pdf

是否可以编写一个在第 2 列中查找的程序,如果找到文件,请将其重命名为第 1 列中的名称。

4

3 回答 3

0

我会用 Python 之类的脚本语言编写一个程序,该程序通过索引文件查找键/值对。如果该值采用特定格式(例如前五个字符是数字和/或字母),则使用该值搜索原始文件并将其重命名为键。

对于您给出的示例: Airol 1 升 (Airol) (Sikkerhetsdatablad) = {4E92C2C7-0A9B-4F77-99CC-D1F03B871564}.pdf

一个简单的伪代码将是:

For each line in index file:
      split the line into KEY & VALUE (split on the '=' sign)
      If first 5 characters of VALUE are all numbers and/or characters:
            search for the file named VALUE
            rename the file named VALUE to KEY
      End If
于 2013-10-14T07:57:29.983 回答
0

从命令行测试以下脚本:

FOR /F "DELIMS== TOKENS=1,*" %i IN (index_file) DO ECHO REN "%j" "%i.pdf"

如果结果接缝正常,请移除ECHO并再次运行。

于 2013-10-14T14:03:10.097 回答
0

提取文件列表到 list.txt,然后

for %f in ({*.pdf) do (
    for /f "delims== tokens=1,2" %g in ('type list.txt ^| find "%f" ') do (
        if not "%g"=="" ren "%f" "%g.pdf"
    )
)

或仅在一行中

for %f in ({*.pdf) do for /f "delims== tokens=1,2" %g in ('type list.txt ^| find "%f" ') do if not "%g"=="" ren "%f" "%g.pdf"
于 2013-10-14T10:32:13.527 回答