ino*_*ino 72 windows file-management rename batch-rename
我需要一种方法将文件夹和子文件夹中的所有文件重命名为小写。
我想知道是否有办法仅使用Windows(XP 或 7)
小智 141
转到目录并运行以下命令:
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
Run Code Online (Sandbox Code Playgroud)
如果有人想要修改/改进,这里是细分:
for /f
- 对于每一行"Tokens=*"
- 处理每一行中的每个项目。%f in (...)
-%f
是每个项目的变量名称。dir
- 列出目录中的每个文件和子目录。/l
- (dir 的参数)使用小写。/b
- (dir 的参数)使用裸格式,只有文件/目录名称,没有大小,没有标题。/a-d
- (参数DIR)难道不是列表目录。(a
代表attribute
,-
代表not
和d
代表directory
)。rename "%f" "%f"
- 用它自己的名字重命名文件,它实际上是由dir
命令和/l
组合小写的。joe*_*joe 22
spacetornado Renamer是一个 Windows 程序,可以批量重命名大量文件。您可以搜索和替换文本,删除一定数量的字符,将大小写更改为小写、大写或首字母大写,以及在每个文件名的开头或结尾(追加/前置)添加文本
nix*_*xda 20
从 Windows 7 开始,您可以将PowerShell用于这些任务
Get-ChildItem "C:\path\to\folder" -recurse |
Where {-Not $_.PSIsContainer} |
Rename-Item -NewName {$_.FullName.ToLower()}
Run Code Online (Sandbox Code Playgroud)
- 选择您的根文件夹
-根文件夹和子文件夹中的所有文件都被重命名
- 文件夹名称被排除在 Where {-Not $_.PSIsContainer} |
dbe*_*ham 10
这是一个适当的递归命令行解决方案,仅使用实际有效的本机 cmd.exe 命令。我相信这是最简单的本地解决方案:
for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"
Run Code Online (Sandbox Code Playgroud)
如果您愿意超越本机 cmd.exe 命令,那么另一个选项是我的JREN.BAT 正则表达式重命名实用程序,它支持将名称转换为大写或小写的选项。它是纯脚本(混合 JScript/批处理),可以在 XP 以后的任何 Windows 机器上本地运行 - 不需要第 3 方 exe 文件。完整的文档是内置的 - 从命令行访问jren /?
,或者jren /??
如果你想要分页输出。
使用 JREN,递归解决方案非常简单:
jren "^" "" /s /l
Run Code Online (Sandbox Code Playgroud)
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>
C:\Foo \TO.txt
C:\Foo\Bar \LOWER.txt
C:\Foo\Bar\Baz \CASE.txt
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
获取第一个循环找到的每个绝对路径中的所有文件名(或文件名和目录名,如果去掉/a-d
开关)的列表,并将这些文件的名称转换为小写。
C:\Foo\ TO.txt
C:\Foo\Bar\ LOWER.txt
C:\Foo\Bar\Baz\ CASE.txt
* 它需要两个循环,因为 to 的第二个参数rename
必须是文件名而不是绝对路径(如/s
开关获得的那个)。
归档时间: |
|
查看次数: |
167293 次 |
最近记录: |