string - 使用文件的内容对其进行重命名

标签 string file batch-file vbscript

我有大约 20 MB 大小的二进制数据文件,文件名是随机的,全部以“AA”开头。在每个文件的内容中,它们在固定位置都有一个特定的字符串(在所有文件中从第 2086 个字节开始)。我想读取由 2 个单词组成的字符串(中间有 1 个空格,如下面示例中的“MyName Sirname”),并将其与文件创建日期一起使用来重命名文件。

这是一个缩短的示例文件(前 3Kb): dl.dropboxusercontent.com/u/18286876/short.zhr

我们想将此特定文件重命名为“MyName Sirname YYYY-MM-DD”。

如果脚本遍历 currant 目录中以“AA”开头的所有文件,那就最好了。该脚本可以是 vbs 或批处理 + vbs 组合,无论哪种更简单。

这可能看起来重复,但原始问题缺乏细节,错误地关注批处理,并且给出的答案不充分。

最佳答案

假设所有文件都位于同一个文件夹中,这样的操作可能会起作用C:\some\where:

Const offset = 2085

Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("C:\some\where").Files
  If Left(f.Name, 2) = "AA" Then
    Set stream = f.OpenAsTextStream
    stream.Skip(offset)

    words = Array()
    Do
      length = Asc(stream.Read(1))
      If length <> 0 Then
        ReDim Preserve words(UBound(words)+1)
        words(UBound(words)) = stream.Read(length)
      End If
    Loop Until length = 0 Or stream.AtEndOfStream

    stream.Close

    If UBound(words) >= 1 Then
      fdate = Year(f.DateCreated) & "-" & Right("0" & Month(f.DateCreated), 2) _
        & "-" & Right("0" & Day(f.DateCreated), 2)
      f.Name = words(0) & " " & words(1) & " " & fdate _
        & "." & fso.GetExtensionName(f.Name)
    End If
  End If
Next

关于string - 使用文件的内容对其进行重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17041863/

相关文章:

windows - 批处理脚本 :search file, 提取数字,并复制到新文件中

java - 检查字符串是否以某种模式结尾

java - 拆分数组与具有相同内容的定义数组不同吗?

c# - 在不复制属性名称的情况下对 web.config 进行强类型调用?

Java-使用InputStream作为文件

python - pickle.dump 在附加到文件时不转储任何内容

java - 如何连续读取一个文件?

c# - 用于搜索单词并返回下一个的正则表达式或函数

batch-file - 获取批处理文件的完整路径

batch-file - 批处理文件: sorting folders and files alphabetically