我有大约 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/