【问题标题】:batch-script to replace dots in foldernames with spaces用空格替换文件夹名称中的点的批处理脚本
【发布时间】:2020-07-30 14:04:53
【问题描述】:

我的一个用户在将云同步到本地工作站时遇到问题。他在深度 (10+) 文件夹结构模式中有 很多 个文件夹,并且 每个 文件夹包含至少三个点(“xy. asdf.qwer $通用描述符").

所以现在有很大的 foobar。在线一切正常,可以按预期创建和编辑新文件。但是同步的文件在 Windows 10 企业版上不断崩溃,并且资源管理器警告“错误的文件夹名称”和其他东西。所以我允许用户通过 GPO 使用长文件夹名称(最多 260 个字符....严重吗?),我认为“做得好。问题解决了”......但没有......同步的本地文件仍然有问题......所以我通过注册表允许相同的选项。彼此彼此。 explorer 一直在抱怨。

所以我决定更改文件夹名称并删除点并用空格替换它们。所以文件夹“xy.asdf.qwer $generic descriptor”将是“xy asdf qwer $generic descriptor”。用户说没关系,所以我写了一个批处理来重命名文件夹。对不起,我的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

批处理工作正常,但不断抛出错误并告诉我“不允许”......它有什么问题?为什么它工作但抱怨?我错过了什么?所有权利都设置正确(完全访问...) [抱歉英语不好...]

【问题讨论】:

  • 这个问题有两 (2) 个答案。其中一个对你有用吗?

标签: batch-file replace cmd naming directory-structure


【解决方案1】:

这个 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
    }

【讨论】:

    【解决方案2】:

    顺序是问题。在尝试更改目录之前,您正在重命名文件夹。它之所以有效,是因为在重命名文件夹后,循环会选择新的文件夹名称,但效率要低得多。我在“cd”行看到错误。这对我有用,而且更简单一些:

    @echo off
    setlocal enabledelayedexpansion
    
    set "leer= "
    set "punkt=."
    
    :rekursion
    for /D %%d in (*) do (
        pushd %%d
        call :rekursion
        popd
        set name=%%~nxd
        ren "%%d" "!name:%punkt%=%leer%!"
    )
    

    【讨论】:

    • sry,/我是愚蠢的。感谢您的提示和您的代码。像一个魅力和预期的那样工作。从文件夹名称中删除所有点并将其替换为空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2018-12-23
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多