我有一大堆文件,其中一些文件包含特殊字符(例如ä,ö,%和其他).我想要一个脚本文件迭代这些文件并重命名它们删除特殊字符.我真的不介意它做什么,但它可以用下划线代替它们,例如
Störung%20.doc将重命名为St_rung_20.doc
按优先顺序排列:
Windiws批处理文件
使用cscript(vbs)运行的Windows脚本文件
可以从命令行运行的第三方软件(即无需用户交互)
另一个语言脚本文件,我必须安装一个额外的脚本引擎
背景:我正在尝试使用Windows上的GnuPG加密这些文件,但它似乎没有使用--encrypt-files选项处理文件名中的特殊字符.
在将文件名提供给gnupg之前,您是否尝试将cmd.exe设置到另一个代码页中?问题chcp 65001
是事先将cmd.exe设置为Unicode并再试一次.
如果失败,以下VBScript将执行此操作:
Option Explicit
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim invalidChars: Set invalidChars = New RegExp
' put all characters that you want to strip inside the brackets
invalidChars.Pattern = "[äöüß&%]"
invalidChars.IgnoreCase = True
invalidChars.Global = True
If WScript.Arguments.Unnamed.Count = 0 Then
WScript.Echo "Please give folder name as argument 1."
WScript.Quit 1
End If
Recurse fso.GetFolder(WScript.Arguments.Unnamed(0))
Sub Recurse(f)
Dim item
For Each item In f.SubFolders
Recurse item
Sanitize item
Next
For Each item In f.Files
Sanitize item
Next
End Sub
Sub Sanitize(folderOrFile)
Dim newName: newName = invalidChars.Replace(folderOrFile.Name, "_")
If folderOrFile.Name = newName Then Exit Sub
WScript.Echo folderOrFile.Name, " -> ", newName
folderOrFile.Name = newName
End Sub
这样叫:
cscript replace.vbs "c:\path\to\my\files"
您还可以在Windows资源管理器中将文件夹拖放到该文件夹中.