Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 用于重命名所有文件的脚本&;将目录转换为小写(包括unicode)_Windows_Powershell_Lowercase - Fatal编程技术网

Windows 用于重命名所有文件的脚本&;将目录转换为小写(包括unicode)

Windows 用于重命名所有文件的脚本&;将目录转换为小写(包括unicode),windows,powershell,lowercase,Windows,Powershell,Lowercase,(一) 我有大约200个目录,大概有1000个子目录包含10000个文件 我希望保持名称的完整性,但将它们全部改为小写,包括Unicode字符,如“É”(改为“é”) 您能建议如何通过PowerShell完成此操作吗?这是我自己的电脑,我有管理员权限。我相信大多数人都可以写这本书,但我的想法是让你来写。因此,我们将指向正确的方向 与-Recurse开关一起使用可获取目录下的所有文件和文件夹 使用该方法将字符串转换为小写 用于重命名要删除的文件夹或目录 我试过了,它也适用于unicode。您可能需

(一) 我有大约200个目录,大概有1000个子目录包含10000个文件

我希望保持名称的完整性,但将它们全部改为小写,包括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()}您需要遍历每个返回的项并对其进行重命名。将其发送到管道是不够的。使用每个对象,就像我在上面编辑的答案一样,我相信您可以找到目录的答案。