gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:41:18 25 4
gpt4 key购买 nike

我有一大组文件,其中一些文件名中包含特殊字符(例如 ä、ö、% 等)。我想要一个脚本文件来遍历这些文件并重命名它们以删除特殊字符。我真的不介意它做什么,但它可以用下划线替换它们,例如

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

按优先顺序:

  1. Windows 批处理文件
  2. 使用 cscript (vbs) 运行的 Windows 脚本文件
  3. 可以从命令行运行的第三方软件(即不需要用户交互)
  4. 另一种语言脚本文件,我必须为其安装额外的脚本引擎

背景:我试图在 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 资源管理器中将文件夹拖放到它上面。

关于windows - 用于从文件名中删除特殊字符的批处理文件脚本 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com