如何在子文件夹中批量重命名文件 - 使用CMD命令提示符
我对命令提示符(Windows)很新颖,但是我已经使用它来完成一些文件扩展名更改,这非常有用。我在编码方面一无所知,所以我只是简单地将我所读过的内容展开,但我正在寻找一种我无法在任何地方找到的命令行。我有文件夹,并在该文件夹内有70个子文件夹,每个文件夹都用1-70的数字标记。这些子文件夹内大约有20个PNG图片文件,目前编号为1到20个PNG格式。我正在寻找一个命令行来重命名每个文件从它的原始名称到“文件夹名称(页码).png”如何在子文件夹中批量重命名文件 - 使用CMD命令提示符
例如,我有一个名为'68'的文件夹,该文件夹内部是1.png,2 .png,3.png。我希望命令行将1.png和2.png等改为68(1).png和68(2)。 png,注意括号和文件夹名称之间的空格。对不起,如果我让它感到困惑,但我真的很感激它,我已经从StackOverflow得到了一些非常有帮助和快速的答案
谢谢,如果你能帮助我,因为我完全无望在这件事上。
我不是一个非常有经验的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
。这应该可以完成您在问题中提出的工作。
没有抱歉的@MRZ我正在使用Windows 7 - 我正在寻找命令行的Windows命令提示符(CMD) – 2013-04-27 06:36:57
oooppss,我的坏。 – mrz 2013-04-27 08:38:07
只运行一次 - 从包含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
)
对不起,听起来像这样的am,但我很难找出这些代码如何工作。如果没有听起来太懒,如果可能的话,什么是理想的命令行,我可以直接复制到命令提示符下,而不必在可能的情况下执行多个进程。此外,最好能够指定文件路径而不必更改目录将是理想的。对不起,没有经验的声音,但我似乎无法理解任何语言或处理器,只是寻找一个简单的命令行,我指定的文件路径和多数民众赞成它。 – 2013-07-04 07:49:33
的方法@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
循环中*
的扩展错误导致文件被重命名多次。
这是有缺陷的,因为在执行命令时存在长期存在的错误,当它更改正在处理的filespec时,它将处理两次文件。 – foxidrive 2013-04-27 13:36:18
请为此声明提供证据。当我测试它时,代码没有重命名两次。 – 2013-04-27 15:28:11
一些进一步的调查显示,这是Windows XP中的一个错误,但显然它已在Windows 7中修复。 – 2013-04-27 15:50:55
我不确定你是否可以用一个命令做到这一点,但你可以编写一个脚本来打开文件夹,然后'mv'你的PNG文件。但是,这将是bash脚本,它不是一个单一的命令,你问。 – mrz 2013-04-27 05:53:27