2

Здравствуйте, у меня есть около 5000 текстовых файлов (TXT) в одном каталоге.Файлы разделены запятыми. Я пытаюсь изменить формат даты (он хранится в первом столбце каждого файла) с M/d/yyyy на MM/dd/yyyy. В этих 5000 файлах около 1 миллиона строк, поэтому я надеюсь, что есть эффективный способ сделать это.Я где-то читал, что для обработки такого большого количества данных можно использовать команду StreamWriter, но я не уверен, что ее можно использовать в моем случае. Спасибо за любое предложение.

Я использую этот скрипт для удаления второй и последней строки нескольких текстовых файлов с помощью StreamWriter. Это очень быстро и эффективно. Я надеюсь, что с некоторыми небольшими изменениями он может быть использован для изменения формата даты в первом столбце. У меня всего 2 недели опыта работы с PS, так что это довольно сложная задача для меня.

dir *.txt | %{     
$content = gc $_.FullName
$output = @($content | select -First 1 )
$output += $content[2..($content.count -2)]
$sw = New-Object System.IO.StreamWriter($_.FullName,$false)
$output | %{$sw.WriteLine($_)}
$sw.close()
}

1 ответ1

0

Вы говорите, что ваши текстовые файлы разделены запятыми. Ну, вы можете использовать Import-Csv -Path C:\file.txt . Затем PowerShell превращает каждую строку в объект. Объектами легче / точнее манипулировать, чем текстом. Объекты могут быть "медленнее", но 5000 файлов / 1M строк - ничто, даже для дешевого ноутбука. Не уверен, как PS будет обрабатывать первую и последнюю строки ваших файлов, так как я не знаю формат.

Конвертировать даты легко. Если я даю Get-Date строку даты, отформатированную как m/d/yyyy, я использую параметр -UFormat для форматирования даты так, как я хочу. Get-Help Get-Date -Full

PS> Get-Date 2/8/2016 -UFormat "%m/%d/%Y"
02/08/2016

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .