Изменение формата даты и времени в нескольких CSV-файлах

у меня есть несколько csv-файлов с такой структурой:

text, text, 01/27/2001 01:00:00 PM

мне нужно обновить все файлы csv с этим форматом даты и времени:

text, text, 27-Jan-2001 13:00:00

есть известный умный/быстрый способ сделать это? Я попытался импортировать их в Excel, но это отдельная задача [копировать/вставлять по одному], поэтому я полагаю, что это не лучший способ сделать это. Возможно, некоторые функции в Notepadd++ [не найти]

спасибо,

8
задан D. Caan
20.04.2023 17:57 Количество просмотров материала 3315
Распечатать страницу

2 ответа

вот сценарий PowerShell для обновления нескольких CSV-файлов из определенной папки за один шаг.

ForEach ($file in Get-ChildItem "C:\myFolder" -filter "*.csv"){         
    Get-Content $file.Fullname | ForEach { 
        $arLine = $_ -split ","
        $date = [DateTime]$arLine[2]
        $arLine[2] = $date.ToString(" dd-MMM-yyyy HH:mm:ss")    
        [array]$arFile += $arLine -join ","
        } 
    $arFile | Out-File $file.Fullname
    clear-variable arFile           
    }

что это значит

  1. перебирать каждый файл в заданной папке и фильтровать только файлы CSV
  2. читать в каждом CSV и цикл через каждую строку
  3. разбить каждую строку на массив. Запятая-наш разделитель
  4. преобразовать строку даты e.g 01/27/2001 01:00:00 PM для объекта даты PowerShell.
  5. форматировать объект date и запишите его обратно в массив. [2] обозначает третье значение / столбец, потому что мы начинаем считать с нуля
  6. объединить все значения текущей строки, чтобы получить одну строку. Используйте запятую в качестве разделителя
  7. добавить все строки в один массив, чтобы мы могли записать их все сразу в файл
  8. перейти к следующему файлу CSV
1
отвечен nixda 2023-04-22 01:45

самый быстрый способ - написать макрос в VBA Excel, который откроет csv-файлы, изменит форматирование и снова сохранит его как csv-файл. Попробуйте следующий курс действий:

  • Запись макроса в Excel что делает именно эту задачу one файл csv (начните запись, откройте файл, выполните форматирование и сохраните файл снова).
  • использовать это ответ SU, чтобы пройти через все файлы в каталоге, чтобы сделать задача, которую вы только что создали. Вам понадобится функция Dir и цикл While.

ваш код будет выглядеть так (Не проверял!):

Public Sub ChangeDates()
    Dim StrFile as String

    strFile = Dir("C:\Some\Location\Of\Your\Files\*.csv")
    While strFile <> ""
        # Append the stuff from the recorded macro here and adjust the filename
        # Probably something like:
        Workbooks.Open Filename:=strFile
        Columns("C:C").Select
        Selection.NumberFormat = "dd-mm-yyyy HH:mm:ss"  # or something else
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        strFile = Dir
    End While
End Sub
2
отвечен agtoever 2023-04-22 04:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

csv
date-time
microsoft-excel
notepad
vba
Вверх