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