我正在使用Windows 7.我有一堆文本文件,每个文件包含一封电子邮件。每个都以这种方式开始:
FROM:人 TO:另一个人 日期:01年1月1日至18:12:00 主题:无论什么
我想重命名这些文件,使其名称如下所示:
2011-01-01 18.12从人到另一个人的电子邮件re Whatever.txt
批量编程是我所知道的,我不太了解它。为了将这个限制在我能够快速理解的项目中,我认为我最好的解决方案是将基本数据提取到文本文件中,然后我可以将其按到批量重命名文件中。
在这种情况下,我正在寻找的是一个批处理文件,它将数据提取到文本文件中的单行中,然后我可以使用全局编辑按摩成形。换句话说,我想我正在寻找这种格式的文本行:
[当前文件名] [提取日期和时间字符串] [从] [到] [主题]
示例:
file01.txt 01年1月1日18:12:00从人到另一个人再无论
如果我有这样的行,我可以在Excel中快速解析它们重命名命令。
谢谢!
答案 0 :(得分:1)
鉴于您使用的是Windows 7,我认为我会提出另一种选择。 Windows Powershell是一个非常有用的命令工具,可用于大量的东西。我想我解决了你的完整问题:
$folder = "C:\..."
$regex = "FROM: (.*) TO: (.*) DATE: (.*) at (.*) SUBJECT: (.*)"
$files = Get-ChildItem $folder *.txt
ForEach ($file in $files) {
$line = (Get-Content $file.FullName -TotalCount 1)
$match = ([regex]$regex).matches($line)[0]
$date = [DateTime]($match.Groups[3]).Value + [TimeSpan]($match.Groups[4]).Value
$from = ($match.Groups[1])
$to = ($match.Groups[2])
$subject = ($match.Groups[5])
# You can change the naming format in the brackets below
Rename-Item $file.FullName -NewName ( $date.ToString("yyyy-MM-dd_HH-mm-ss") + " Email From " + $from + " to " + $to + " RE " + $subject)
}
它做了一些假设(总是会找到匹配)。您可以轻松调整命名格式和其他内容。将此代码保存为脚本(.ps1)并在Powershell提示符(powershell.exe)中运行