Windows 用于重命名所有文件的脚本&;将目录转换为小写(包括unicode)
(一) 我有大约200个目录,大概有1000个子目录包含10000个文件 我希望保持名称的完整性,但将它们全部改为小写,包括Unicode字符,如“É”(改为“é”)Windows 用于重命名所有文件的脚本&;将目录转换为小写(包括unicode),windows,powershell,lowercase,Windows,Powershell,Lowercase,(一) 我有大约200个目录,大概有1000个子目录包含10000个文件 我希望保持名称的完整性,但将它们全部改为小写,包括Unicode字符,如“É”(改为“é”) 您能建议如何通过PowerShell完成此操作吗?这是我自己的电脑,我有管理员权限。我相信大多数人都可以写这本书,但我的想法是让你来写。因此,我们将指向正确的方向 与-Recurse开关一起使用可获取目录下的所有文件和文件夹 使用该方法将字符串转换为小写 用于重命名要删除的文件夹或目录 我试过了,它也适用于unicode。您可能需
您能建议如何通过PowerShell完成此操作吗?这是我自己的电脑,我有管理员权限。我相信大多数人都可以写这本书,但我的想法是让你来写。因此,我们将指向正确的方向 与
-Recurse
开关一起使用可获取目录下的所有文件和文件夹
使用该方法将字符串转换为小写
用于重命名要删除的文件夹或目录
我试过了,它也适用于unicode。您可能需要以不同的方式处理文件和文件夹。我不得不这么做
编辑:
对于文件:
Get-ChildItem C:\temp -Recurse -File | ForEach-Object{ Rename-Item -Path $_.FullName -NewName $_.name.ToLower()}
我相信大多数人都能写这本书,但这个想法是由你来写的。因此,我们将指向正确的方向 与
-Recurse
开关一起使用可获取目录下的所有文件和文件夹
使用该方法将字符串转换为小写
用于重命名要删除的文件夹或目录
我试过了,它也适用于unicode。您可能需要以不同的方式处理文件和文件夹。我不得不这么做
编辑:
对于文件:
Get-ChildItem C:\temp -Recurse -File | ForEach-Object{ Rename-Item -Path $_.FullName -NewName $_.name.ToLower()}
我使用的命令,文件夹和文件,我希望它有帮助
for /r "G:\Teste" %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/ad "%D"') do @ren "%D\%F" "%F"
for /r "G:\teste" %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"
我使用的命令,文件夹和文件,我希望它有帮助
for /r "G:\Teste" %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/ad "%D"') do @ren "%D\%F" "%F"
for /r "G:\teste" %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"
Windows不区分大小写吗?也就是说,您将无法将文件1重命名为文件1。操作将被拒绝,因为操作系统将看不到两者之间的差异。检查这个:@marekful这不正确。虽然windows不区分大小写(您可以使用
Test.txt
调用Test.txt
),但它在不同的大写名称之间是不同的Rename Item TEST.txt TEST.txt
只需将TEST.txt
重命名为TEST.txt
,不会被拒绝。您的参考资料是针对文件资源管理器的,大约有5年历史。您好,这是为了“装饰性”目的:)将所有这些文件和目录放在小写形式要简单得多Windows不区分大小写吗?也就是说,您将无法将文件1重命名为文件1。操作将被拒绝,因为操作系统将看不到两者之间的差异。检查这个:@marekful这不正确。虽然windows不区分大小写(您可以使用Test.txt
调用Test.txt
),但它在不同的大写名称之间是不同的Rename Item TEST.txt TEST.txt
只需将TEST.txt
重命名为TEST.txt
,不会被拒绝。您的参考资料是针对文件资源管理器的,大约有5年历史。您好,这是为了“装饰性”目的:)将所有这些文件和目录放在小写形式要简单得多。以下是我迄今为止尝试过的方法:将项重命名为小写形式(Get ChildItem-LiteralPath D:\test-Directory-file-Recurse)不确定语法是否正确:(尝试了此操作,但也不起作用:(Get-ChildItem D:\test-Recurse | Rename-Item-NewName{$\.name.ToLower()}您需要遍历每个返回的项并对其进行重命名。将其发送到管道是不够的。使用foreach对象,就像我在上面编辑了答案一样。我相信您可以找到目录的答案。以下是我迄今为止尝试过的方法:将项重命名为较低(Get ChildItem-LiteralPath D:\test-Directory-File-Recurse)不确定语法是否正确:(尝试了此操作,但也不起作用:(Get ChildItem D:\test-Recurse | Rename Item-NewName{$\ uName.ToLower()}您需要遍历每个返回的项并对其进行重命名。将其发送到管道是不够的。使用每个对象,就像我在上面编辑的答案一样,我相信您可以找到目录的答案。