如何批量重命名子文件夹中的文件 - 使用CMD命令提示符

时间:2013-04-27 05:34:39

标签: file cmd subdirectory renaming

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

例如,我有一个名为'68'的文件夹,在该文件夹中是1.png,2.png,3.png。我希望命令行将1.png和2.png等更改为68(1).png和68(2)。 png,注意括号和文件夹名称之间的空格。很抱歉,如果我让它感到困惑,但我真的很感激,我从StackOverflow获得了一些非常有用和快速的答案

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

3 个答案:

答案 0 :(得分:1)

仅运行一次 - 从包含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
)

答案 1 :(得分:0)

我不是一个非常有经验的bash scriptor,但我想这应该为你完成任务。我假设你使用的是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。这应该像你在问题中所做的那样完成工作。

答案 2 :(得分:0)

对建议的方法@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扩展导致文件重命名的错误多次。