replace或删除文件夹中所有文件的文件名中的某些字符
如何通过一些batch file执行删除某些字符或用其他字符replace某些字符,一次去除Windows文件夹中的所有文件的文件名,是否有DOS命令?
使用PowerShell为DOS提示符做更聪明的事情。 在这里,我展示了如何批量重命名当前目录中包含空格的所有文件和目录,方法是用_
下划线replace它们。
Dir | Rename-Item -NewName { $_.Name -replace " ","_" }
编辑:
或者,可以使用Where-Object
命令过滤出连续cmdlet (command-let)的不合格对象。 以下是一些例子来说明它可以承受的灵活性:
-
跳过任何文档文件
Dir | Where-Object { $_.Name -notmatch "\.(doc|xls|ppt)x?$" } | Rename-Item -NewName { $_.Name -replace " ","_" }
-
仅处理目录(3.0之前的版本)
Dir | Where-Object { $_.Mode -match "^d" } | Rename-Item -NewName { $_.Name -replace " ","_" }
PowerShell v3.0引入了新的
Dir
标志。 你也可以在那里使用Dir -Directory
。 -
要跳过已经包含下划线(或其他字符)的文件,
Dir | Where-Object { -not $_.Name.Contains("_") } | Rename-Item -NewName { $_.Name -replace " ","_" }
Windows PowerShell中用于删除或重命名特定字符的单行命令如下所示。 (这里的空白正在被下划线取代)
Dir | Rename-Item –NewName { $_.name –replace " ","_" }
这个batch file可以帮助,但是它有一些限制。 文件名字符=和%不能被replace(从这里的内存中去掉),文件名中的^也可能是一个问题。
在这个部分中, %newname: =_%
在下面的每一行代码中,它将replace后面的字符:
后面的字符代表了一堆字符将被replace为下划线。
删除echo
以激活ren命令,因为它只会将命令打印到控制台窗口,直到您执行。
它只会处理当前文件夹,除非您将DIR添加到DIR命令部分,然后它将处理当前文件夹下的所有文件夹。
要删除某个字符,请从=号后面删除该字符。 在%newname:z=%
一个条目将删除所有的z字符(不区分大小写)。
@echo off for /f "delims=" %%a in ('dir /a:-d /o:n /b') do call :next "%%a" pause GOTO:EOF :next set "newname=%~nx1" set "newname=%newname: =_%" set "newname=%newname:)=_%" set "newname=%newname:(=_%" set "newname=%newname:&=_%" set "newname=%newname:^=_%" set "newname=%newname:$=_%" set "newname=%newname:#=_%" set "newname=%newname:@=_%" set "newname=%newname:!=_%" set "newname=%newname:-=_%" set "newname=%newname:+=_%" set "newname=%newname:}=_%" set "newname=%newname:{=_%" set "newname=%newname:]=_%" set "newname=%newname:[=_%" set "newname=%newname:;=_%" set "newname=%newname:'=_%" set "newname=%newname:`=_%" set "newname=%newname:,=_%" echo ren %1 "%newname%
PowerShell的答案是好的,但是Rename-Item命令不能在同一个目标目录中工作,除非你的所有文件都有不需要的字符(如果发现重复的话会失败)。
如果你和我一样,并且混合了好名字和坏名字,那就试试这个脚本(用下划线replace空格):
Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace(" ", "_") }
我会build议rename
为此。 typesren /?
在命令行获得更多帮助。