我的一个用户在将云同步到本地工作站时遇到问题。他在深度(10+)文件夹结构模式中拥有很多文件夹,并且每个文件夹至少包含三个点(“xy. asdf.qwer $通用描述符")。
所以现在有了大foobar。在线一切正常,可以按预期创建和编辑新文件。但同步的文件在 Windows 10 企业版上不断崩溃,资源管理器会发出“错误的文件夹名称”等警告。所以我允许用户通过 GPO 使用长文件夹名称(最多 260 个字符...认真的?),我认为“干得好。问题解决了”...但是没有...同步的本地文件仍然有问题...所以我通过注册表允许相同的选项。彼此彼此。资源管理器一直在提示。
所以我决定更改文件夹名称并删除点并用空格替换它们。因此文件夹“xy.asdf.qwer $通用描述符”将是“xy asdf qwer $通用描述符”。用户说没关系,所以我编写了一个批处理来重命名文件夹。抱歉,我的 powershell 真的很糟糕。但如果你知道 powershell 中的解决方案,它也会受到赞赏并且很好。
@echo off
setlocal enabledelayedexpansion
set "leer= "
set "punkt=."
call :rekursion
goto :eof
:rekursion
for /D %%d in (*) do (
set name=%%~nxd
ren "%%d" "!name:%punkt%=%leer%!"
cd %%d
call :rekursion
cd ..
)
exit /b
批处理工作正常,但不断抛出错误并告诉我“不允许”...有什么问题吗?为什么它有效但有提示?我缺少什么?所有权限均设置正确(完全访问...) [抱歉英语不好...]
最佳答案
这个 PowerShell 脚本将执行您想要的操作。如果您使用的是受支持的 Windows 平台,则可以使用 PowerShell。
我不想在目录或文件名中出现空格字符,但这是你的选择。当您对名称的正确更改感到满意时,请从 Rename-Item
命令中删除 -WhatIf
。
#Requires -Version 3
$BaseDir = 'C:\src\t'
Get-ChildItem -Recurse -Directory -Path $BaseDir |
Sort-Object -Descending -Property FullName |
Where-Object { $_.Name -match '\.' } |
ForEach-Object {
$NewName = $_.Name -replace '\.',' '
Rename-Item -Path $_.FullName -NewName $NewName -WhatIf
}
关于batch-file - 用空格替换文件夹名称中的点的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174903/