【问题标题】:Batch modify file name and add ascending numbers批量修改文件名并添加升序号
【发布时间】:2016-04-17 14:11:05
【问题描述】:

我有一堆按日期排序的 TIFF 图像文件。我需要使用 python 或终端命令重命名它们。文件名的结构如下:

  • basename_unnecessary_x.tif

地点:

  • basename = 是我需要保留的原始文件名的一部分(16 个字符长)
  • 不必要的 = 我想丢弃的原始文件名的一部分(14 个字符长)
  • x = 我需要添加的升序数字。从 0 开始,每个后续文件以 250 步递增。

我知道有很多关于批量重命名和将升序数字添加到文件名的问题,但我没有找到任何保留原始文件名的一部分并删除另一部分添加升序数字的东西。任何帮助,将不胜感激。 谢谢!

【问题讨论】:

  • 你自己试过了吗??请分享您的代码!请记住,SO 不是免费的代码编写服务......请解释“我有 [...] 文件按日期排序”的意思;你有一个文本文件中的文件排序列表吗?还是您在 Windows 资源管理器中查看它们按日期排序?还是正确排序文件的脚本任务的一部分?
  • 嗨 aschipfl。我一直在使用的代码通过删除原始文件名并仅添加数字来重命名文件,我在本网站的线程上遇到了这些。我自己尝试过,但我绝不是一个熟练的代码编写者,所以我很抱歉,但我没有自己的代码。
  • 回答您的问题,按日期,我​​的意思是当我在 Mac 上的 finder 中查看文件时,文件按创建日期排序。我没有包含文件名列表的文本文件,但我现在刚刚制作了一个。我不需要脚本来正确排序文件,但我可以看到这将非常有用。谢谢。

标签: python sorting batch-file terminal rename


【解决方案1】:

首先获取所有要重命名的文件名到一个文本文件中。

如果您想重命名目录中的所有文件,只需运行以下命令并将其重定向到文本文件。[更改的代码,它现在将仅列出 .tif 文件]

dir /a:-D /b *.tif >cp1.txt

现在使用下面的代码,它将文件 basename_unnecessary_x.tif 重命名为 basename_0.tif 等等.

@echo off
CD %CD%\<Folderpath in which .tif files should be renamed>
setlocal enabledelayedexpansion
set /a count=0
echo --------Script started -------------------------
echo.
for /f "tokens=*" %%a in (cp1.txt) do (
echo original file name %%a
echo ------------------------------------------
for /f "tokens=1 delims=_" %%b in ("%%a") do ( 

echo file will be renamed to %%b_!count!.tif
echo ------------------------------------------
rename %%a %%b_!count!.tif
set /a count+=250
)
)
echo.
echo --------Script Completed -------------------------

对脚本的更改:

  1. dir 命令现在只会列出 .tif 文件到 cp1.txt
  2. 您可以从任何位置执行脚本,前提是您更新了代码 CD 部分中的路径。
  3. 现在更新了代码,它会按照0到250的顺序……以此类推。

仅供参考,即使我已经初始化为零,它也给第一个文件 250 的原因,因为我在重命名命令中使用它之前将它增加了 250。

【讨论】:

  • 您好 prudviraj,非常感谢您的回复。我想我的问题可能不清楚。我应该写mac终端。无论哪种方式都不是问题,因为我可以在 Windows 虚拟机中使用命令提示符。使用您的第一个代码创建带有文件列表的文本文件可以正常工作。但是,我不断收到重命名代码: %%a 出乎意料,此时我通常将代码复制并粘贴到命令行中。我这样做对吗?再次感谢。
  • 当您从命令行运行时,您需要使用 %a 而不是 %%a ,我的建议是将整个代码复制到一个文本文件中,并使用 a.bat 扩展名保存并尝试运行它。如果您需要帮助,请告诉我
  • 您好,再次感谢您的回复。我进步了很多。我不得不将 a.bat 文件放在一个子目录中,并使用 call 命令从该文件夹中调用 a.bat。否则代码会尝试重命名批处理文件。因此,目录中唯一的文件和文件夹是 tif 文件、批处理文件所在的文件夹以及带有 tif 文件列表的文本文件。重命名代码有效,但是它从 250 开始,而不是 0?您的代码清楚地用 0 然后 +=250 初始化,所以我不明白。由于某种原因,我没有收到任何 %%a 错误,所以我没有更改它们。
  • @AGB ,请使用更新后的代码,如果您遇到问题,请告诉我。如果您觉得有帮助,请投票并接受我的回答。谢谢
  • 嗨 Prudviraj,它成功了!这确实很有帮助。非常感谢。我无法投票给你,因为我没有足够的声誉来投票,但我确实接受了你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2023-04-06
  • 2023-02-23
相关资源
最近更新 更多