-2

我使用的是 Windows 7。我有一堆文本文件,每个文件都包含一封电子邮件。每个都以这种方式开始:

从:一个人到:另一个人 日期:2011 年 1 月 1 日 18:12:00 主题:随便

我想重命名这些文件,使它们的名称如下所示:

2011-01-01 18.12 从一个人到另一个人的电子邮件 rewhatever.txt

批处理编程是我所知道的,我不是很了解。为了将其限制在一个我可以快速理解的项目中,我认为我最好的解决方案是将基本数据提取到一个文本文件中,然后我可以将它按摩到一个批量重命名文件中。

在这种情况下,我正在寻找一个批处理文件,它将数据提取到文本文件中的单行中,然后我可以通过全局编辑将其按摩成形状。换句话说,我想我正在寻找这种格式的文本行:

[当前文件名] [提取的日期和时间字符串] [从] [到] [主题]

例子:

file01.txt 2011 年 1 月 1 日 18:12:00 从一个人到另一个人

如果我有这样的行,我可以在 Excel 中很快将它们解析为重命名命令。

谢谢!

4

1 回答 1

3

鉴于您使用的是 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)

于 2011-04-18T03:34:11.770 回答