我需要一种方法将文件夹和子文件夹中的所有文件重命名为小写。
我想知道是否有办法做到这一点仅有的Windows(XP 或 7)
答案1
进入目录并运行以下命令:
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
如果有人想修改/改进,请按照以下细分:
for /f
- 每一行"Tokens=*"
- 处理每一行中的每个项目。%f in (...)
-%f
是每个项目的变量名。dir
- 列出目录下的每个文件和子目录。/l
-(目录参数)使用小写。/b
-(目录参数)使用裸格式,仅文件/目录名称,没有大小,没有标题。/a-d
-(目录参数)做不是列表目录。(a
代表attribute
、-
代表not
、d
代表directory
)。rename "%f" "%f"
- 使用文件自己的名称重命名文件,该名称实际上是通过dir
命令和/l
组合小写的。
答案2
从 Windows 7 开始,您可以使用电源外壳对于这些任务
Get-ChildItem "C:\path\to\folder" -recurse |
Where {-Not $_.PSIsContainer} |
Rename-Item -NewName {$_.FullName.ToLower()}
- 选择您的根文件夹
- 全部文件根文件夹和子文件夹内被重命名
- 文件夹名称被排除在外 Where {-Not $_.PSIsContainer} |
答案3
spacetornado 重命名器是一款 Windows 程序,可批量重命名大量文件。您可以搜索和替换文本、删除一定数量的字符、将大小写更改为小写、大写或首字母大写,以及将文本添加到每个文件名的开头或结尾(附加/前置)
答案4
已接受答案的“递归”版本(有效*)
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))
第一个循环
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')
获取绝对路径当前目录内的所有目录(包括它):
C:\Foo>
目录:\Foo\TO.txt
目录:\Foo\Bar\下.txt
目录:\Foo\Bar\Baz\案例.txt
第二圈
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
获取所有文件名(或者文件和目录名称(如果你取出开关/a-d
)在每个绝对路径发现第一圈,并将这些文件的名称转换为小写。
目录:\Foo\致.txt
目录:\Foo\Bar\下.txt
目录:\Foo\Bar\Baz\案例.txt
* 它需要两个循环,因为第二个参数必须rename
是文件名而不是绝对路径(与通过开关获得的一样/s
)。