Пакетное переименование файлов - Добавить строки 1 и 3 - PullRequest
0 голосов
/ 18 апреля 2011

Я использую Windows 7. У меня есть куча текстовых файлов, каждый из которых содержит одно сообщение электронной почты. Каждый начинается так:

ОТ: Человек TO: Другой Человек ДАТА: 01.01.11 в 18:12:00 ПРЕДМЕТ: Что бы ни

Я хочу переименовать эти файлы, чтобы их имена выглядели так:

2011-01-01 18.12 Электронное письмо от лица другому лицу re Whwhat.txt

Пакетное программирование - это все, что я знаю, и я не очень хорошо это знаю. В целях ограничения этого проекта, который я могу быстро понять, я думаю, что мое лучшее решение будет состоять в том, чтобы извлечь важные данные в текстовый файл, который я затем смогу преобразовать в файл пакетного переименования.

В этом случае мне нужен командный файл, который извлечет данные в отдельные строки в текстовом файле, который я затем смогу преобразовать в форму с помощью глобальных правок. Другими словами, я думаю, что я ищу текстовые строки в этом формате:

[текущее имя файла] [извлеченная строка даты и времени] [от] [до] [тема]

Пример:

file01.txt 01.01.11 в 18:12 от Лица другому, независимо от того,

Если у меня есть такие строки, я могу довольно быстро разобрать их в команды переименования в Excel.

Спасибо!

1 Ответ

1 голос
/ 18 апреля 2011

Учитывая, что вы используете 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...