[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何批量删除所有文件名中的特殊字符?

如何批量删除当前目录下的所有文件包含子目录中的文件的文件名中的特殊符号。
就是除了a-z A-Z 0-9 中文字 - .  以外的符号,全部删除掉。符号,只保留两个半角符号 - .  
其它的都不要,尤其的感叹号 !有的文件名中还有多个感叹号。
还有些是外国文字,心型,全角/半角中括号 、全角/半角小括号、各种标点符号等等。要求全部删除掉,如果删除不了,也可以替换成A或者什么的。

本帖最后由 thp2008 于 2022-9-25 00:16 编辑

我直接运行了,数千文件,一下就解决了。牛,满足要求。


大神,能不能帮我改下,把空格保留下来,可以吗?谢谢!

TOP

感谢!看来大家都有这种需求,弄一个,以后就方便了。一条命令全搞定了,不要为那些特殊字符的事,烦了。

TOP

我试了下,运行,会报以下错误,但是好像不影响改名。规则是对的。包括子目录都一次性改好了。
  1. powershell "dir -rec|foreach{ren $_.fullname $($_.name -replace '[^0-9a-z\u4e00-\u9fff\-\.\s\w]')}"
复制代码
ren : 源路径和目标路径必须不同。
所在位置 行:1 字符: 18
+ ... rec|foreach{ren $_.fullname $($_.name -replace '[^0-9a-z\u4e00-\u9fff ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (H:\Sex2\Temp:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

TOP

再求助一下,
  1. powershell "dir -rec|foreach{ren $_.fullname $($_.name -replace '[^0-9a-z\u4e00-\u9fff\s\w\-\.]')}"
复制代码
1、我在使用时,发现一个问题,就是文件名中不能有半角的 “ [ ” 或“ ] ”不然会报错。

2、请帮忙把这句改一下,如果我想对文件夹名改名,删除所有特殊字符呢。

TOP

回复 12# WHY


    出差了几天,不方便上网,现在才来回复。非常感谢,测试通过,这次的比上次的好,完全没有报错了。好用!

TOP

返回列表