批量重命名文件 - 追加第1行和第1行3

时间:2011-04-18 01:29:00

标签: text extract batch-rename

我正在使用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中快速解析它们重命名命令。

谢谢!

1 个答案:

答案 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)中运行