当前位置:  开发笔记 > 开发工具 > 正文

用于从文件名中删除特殊字符的批处理文件脚本(Windows)

如何解决《用于从文件名中删除特殊字符的批处理文件脚本(Windows)》经验,为你挑选了1个好方法。

我有一大堆文件,其中一些文件包含特殊字符(例如ä,ö,%和其他).我想要一个脚本文件迭代这些文件并重命名它们删除特殊字符.我真的不介意它做什么,但它可以用下划线代替它们,例如

Störung%20.doc将重命名为St_rung_20.doc

按优先顺序排列:

    Windiws批处理文件

    使用cscript(vbs)运行的Windows脚本文件

    可以从命令行运行的第三方软件(即无需用户交互)

    另一个语言脚本文件,我必须安装一个额外的脚本引擎

背景:我正在尝试使用Windows上的GnuPG加密这些文件,但它似乎没有使用--encrypt-files选项处理文件名中的特殊字符.



1> Tomalak..:

在将文件名提供给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资源管理器中将文件夹拖放到该文件夹​​中.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有