【问题标题】:How to bulk rename files within subfolders - using CMD command prompt如何批量重命名子文件夹中的文件 - 使用 CMD 命令提示符
【发布时间】:2013-04-21 08:28:51
【问题描述】:

我对命令提示符 (Windows) 很陌生,但是我用它来更改一些文件扩展名,它非常有用。我对编码一无所知,所以我只是在阅读我所读过的内容,但我正在寻找一个似乎在任何地方都找不到的命令行。我有文件夹,该文件夹内有 70 个子文件夹,每个子文件夹用 1-70 的数字标记。在这些子文件夹中大约有 20 个 png 图片文件,目前以 png 格式的 1-20 编号。我正在寻找一个命令行来将每个文件从其原始名称重命名为“文件夹名称(页码).png”

例如,我有一个名为“68”的文件夹,该文件夹内有 1.png、2.png、3.png。我希望命令行将 1.png 和 2.png 等更改为 68 (1).png 和 68 (2)。 png,注意括号和文件夹名称之间的空格。抱歉,如果我把它弄糊涂了,但我真的很感激,我之前从 StackOverflow 得到了一些非常有用和快速的答案

谢谢你,如果你能帮助我,因为我对这件事完全没有希望。

【问题讨论】:

  • 我不确定你是否可以用一个命令来做到这一点,但你可以编写一个脚本来打开文件夹,然后 mv 你的 png 文件。但这将是 bash 脚本,它不是您所要求的单个命令。

标签: file cmd subdirectory renaming


【解决方案1】:

我不是一个非常有经验的 bash 脚本编写者,但我想这应该可以为您完成任务。我假设您使用的是 Linux 操作系统。所以打开一个文本编辑器并复制以下内容:

#!/bin/bash

NumberOfFolders=70

for((a=1; a <= NumberOfFolders ; a++))
do
        cd ./$a
        b=1
        while [ -f $b.png ]
        do
                mv "$b.png" "$a($b).png"
                let b=b+1
        done
        cd ..
done

将此脚本保存在文件夹 1-70 的位置(并将其命名为whatever.ssh)。然后打开一个终端并写下chmod a+x whatever.ssh,然后写下./whatever.ssh。这应该可以完成您在问题中提出的工作。

【讨论】:

  • 不抱歉@MRZ 我正在使用 Windows 7 - 我正在寻找 Windows 命令提示符 (CMD) 的命令行
【解决方案2】:

只运行一次 - 从包含 70 个文件夹的文件夹中启动它。

@echo off
for /f "delims=" %%a in ('dir /ad /b') do (
pushd "%%a"
for /f "delims=" %%b in ('dir /a-d /b') do ren "%%b" "%%a (%%~nb)%%~xb"
popd
)

【讨论】:

  • 很抱歉听起来很不成熟,但我很难弄清楚这些代码是如何工作的。听起来不太懒惰,如果可能的话,理想的情况是命令行,我可以直接复制到命令提示符中,而不必在可能的情况下执行多个进程。此外,最好能够指定文件路径,而不必更改目录将是理想的。很抱歉听起来没有经验,但我似乎无法理解任何语言或处理器,我只是在寻找一个简单的命令行,我可以在其中指定文件路径,仅此而已。
【解决方案3】:

对建议的@foxidrive 方法稍作修改,因此脚本可以在任何地方运行,而不必解析dir 输出:

@echo off
for /r "C:\root\folder" %%d in (.) do (
  pushd "%%~fd"
  for %%f in (*) do ren "%%~ff" "%%~nd (%%~nf)%%~xf"
  popd
)

请注意,这在 Windows XP 中不起作用(不确定 Windows Vista),因为内部 for 循环中的 * 扩展存在错误,会导致文件被多次重命名。

【讨论】:

  • 这是有缺陷的,因为一个长期存在的错误与一个普通的 for in do 命令,当你更改它正在处理的文件规范时,它会处理文件两次+。
  • 请为此声明提供证据。当我测试它时,代码没有重命名任何东西。
  • 进一步调查表明这是 Windows XP 中的一个错误,但显然它已在 Windows 7 中修复。
  • 在我的测试中,它仍然是 Windows 8 中的一个错误(至少从 MSDos 3.1 开始就存在) - 尝试使用大量文件。说 100。
  • 我有一些示例代码来演示它,但不知道在哪里发布。
猜你喜欢
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多