在 Windows 中递归删除文件夹中的字符

在 Windows 中递归删除文件夹中的字符

给定一个文件夹结构:

---- folder1#name
--------- folder2#name
---- folder3#name
--------- folder4#name
------------ folder5#name
------------ folder6#name
------------ folder7#name

我想递归地浏览它们并重命名文件夹,以便#从其名称中删除字符。

我想要实现这一点的原因是因为我在 Web 项目的公共资产文件夹中使用这种结构,而这个#字符当然会导致问题,因为在 URL 方面它意味着其他东西。

对我来说最简单的事情就是如果它#不存在。

我如何在 Windows 中实现这一点(我目前使用的是 10)

答案1

创建这个脚本可能比较困难,所以我冒昧地为您编写了它。它用空格替换了 #。您可以随意将其更改为您想要的任何内容。

# go to the parent folder
set-location -Path C:\temp\test\test#name

#create list and sort it backwards (we want to rename from the deepest folders to the lowest.
$folders = get-childitem -Recurse -Directory |sort-object -Descending

$folders | ForEach-Object {
    set-location $_.parent.FullName
    rename-item $_.name ($_.name -replace("#", " "))
}

答案2

我最终使用了一个可以完成该工作的 Python 脚本。

这当然需要在确切的文件夹中运行os.walk....行走?

import os

for root, dirs, files in os.walk(".", topdown=False):
    for name in dirs:
        print("old name: " + name)

        new_name = name.replace('#', '')

        print('new name ' + name)

        os.rename(os.path.join(root, name), os.path.join(root, new_name))

答案3

您可以在 PowerToys 中使用 PowerRename:

  1. 下载 PowerToys
  2. 打开 PowerToys 设置
  3. 激活 PowerRename
  4. 按照下面链接中的 GIF 所示进行操作(选择所有父文件夹,填写#要替换的内容,不填写任何内容):http://norway-yv.epizy.com/files/howto.gif(我发誓它不是病毒,但它“太大”而无法嵌入到答案中)

相关内容