将文件批量重命名为更有意义的名称

Batch renaming files to a more meaningful name

很快我将开始收到每晚上传的 zip 文件,这些信息需要重命名以使其更有意义。每天晚上都会上传一个 zip 文件,其标签类似于 CallRecording_1-000.zip。提取后,它将包含以下文件集:

index.html
index.xml
AT1_ID1_TT3_ID2-1607458932.2.WAV
AT1_ID1_TT3_ID2-1607458948.4.WAV
AT1_ID1_TT3_ID6-1607458983.6.WAV

XML 文件包含以下内容:

<all>
  <recording_index recapp_id="" recapp_name="" last_generated="0">
    <day_index date="2020-12-08">
      <recording target_name="Unknown recording" filename="warning%3A" filesize="0" date="1969-12-31 19:00" source="" destination=""/>
      <recording target_name="1+ Dialing (11 Digits)" filename="AT1_ID1_TT3_ID2-1607458932.2.WAV" filesize="26K" date="2020-12-08 15:22" source="Softphone Test4" destination="15545595331"/>
      <recording target_name="1+ Dialing (11 Digits)" filename="AT1_ID1_TT3_ID2-1607458948.4.WAV" filesize="45K" date="2020-12-08 15:23" source="Softphone Test3" destination="15559639584"/>
      <recording target_name="10 Digit Dialing" filename="AT1_ID1_TT3_ID6-1607458983.6.WAV" filesize="59K" date="2020-12-08 15:23" source="Softphone Test4" destination="9545596535"/>
    </day_index>
  </recording_index>
</all>

我要做的是将一系列文件名转换为上面显示的标签的组合。

期望输出

AT1_ID1_TT3_ID2-1607458948.4.wav 应重命名为 date_source_destination.wav。根据日期格式如何包含文件名的“禁止”文本,source_destination.wav 就足够了,除非有办法将日期格式转换为 mm-dd-yyyy

基于上述示例的最终输出示例:

AT1_ID1_TT3_ID2-1607458948.4.wav= 2020-12-08_Softphone Test3_15559639584.wav

为了简单的意图和目的。我正在生成一个 bat 文件,它将在标记为 ExtractFolder 的临时目录中创建,稍后将使用上传日期重命名。

@echo off
for %%z in ("ExtractFolder\AT1*.WAV") do (
  for /f tokens^=4^,8^,10^,12^ delims^=^" %%a in ('type "ExtractFolder\index.xml"^|find /i "%%~nxz"') do (
    for /f "tokens=1,2 delims=:" %%t in ("%%b") do (
      ECHO ren "%%z" "%%t-%%u_%%c_%%d%%~xz"
    )
  )
)

输出:

ren "ExtractFolder\AT1_ID1_TT3_ID2-1607458932.2.WAV" "2020-12-08 15-22_Softphone Test4_15545595331.WAV"
ren "ExtractFolder\AT1_ID1_TT3_ID2-1607458948.4.WAV" "2020-12-08 15-23_Softphone Test3_15559639584.WAV"
ren "ExtractFolder\AT1_ID1_TT3_ID6-1607458983.6.WAV" "2020-12-08 15-23_Softphone Test4_9545596535.WAV"

注意:我只是通过回显来“解除”ren 命令。当您确定 ECHO 符合您的要求时,请将其删除。

注意:这在很大程度上取决于 xml 文件的格式,不能保证。如果你认为,格式可能会改变,最好切换到一种可以正确解析 xml 的语言(批处理不能)