Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - преобразование формата даты в текстовом файле

Ответить
Настройки темы
VBS/WSH/JS - преобразование формата даты в текстовом файле

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброе время суток!
Столкнулся со следующей проблемой: в каталоге C:\ID находится порядка 30-40 txt файлов в них дата с форматом 31.12.1970, необходимо преобразовать в формат 1970-12-31 желательно во всех файлах разом.

Отправлено: 02:52, 15-05-2015

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


в названии или в содержимом? если в содержимом какой формат строки?

Отправлено: 09:19, 15-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата slnt:
порядка 30-40 txt файлов в них дата с форматом 31.12.1970 »
Упакуйте два-три таких файла в архив и выложите сюда или на RGhost.

Отправлено: 09:24, 15-05-2015 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar ssp.rar
(606 байт, 8 просмотров)

Даты в содержимом файла.
http://forum.oszone.net/attachment.p...1&d=1431985654

Последний раз редактировалось slnt, 19-05-2015 в 00:54.


Отправлено: 00:40, 19-05-2015 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код PowerShell:

Код: Выделить весь код
gci 'C:\ID\*.txt'|%{
 sc $_ (gc $_|%{
  ($_.Split('\|')|%{
   if(([Regex]::Match($_,'^[0-3]\d\.[01]\d\.[1-9]\d{3}$')).Success){
    $_=(Get-Date $_ -Format 'yyyy-MM-dd')
   };$_
  }) -join '|' -replace '\|$'
 })
}
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:55, 19-05-2015 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Georgio:
PowerShell »
Спасибо большое! Все отработало в лучшем виде!

Отправлено: 00:59, 20-05-2015 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Georgio, а для чего Вы разбивали строки на составляющие по «.Split()»? Я не пойму цель этого.

Отправлено: 21:59, 22-05-2015 | #7


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Iska, да это первое, что в голову пришло: проверить составляющие на соответствие шаблону даты и заменить. А как бы Вы написали?

Отправлено: 22:50, 22-05-2015 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Я бы, наверное, сразу во всей строке делал замену, наподобие:
Код: Выделить весь код
Get-ChildItem -Path 'C:\Мои проекты\05\ssp\*.txt' | ForEach-Object -Process {
    Set-Content -Path $_ -Value (
        Get-Content -Path $_ | ForEach-Object -Process {
            $_ -replace '(\d{2})\.(\d{2})\.(\d{4})', '$3-$2-$1'
        }
    )
}
Если файлы не слишком большие — быстрее будет и вовсе обойтись без перебора отдельных строк.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:53, 23-05-2015 | #9


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Как вариант можно использовать Select-String, например:
Код: Выделить весь код
sls ($r='(\d{2})\.(\d{2})\.(\d{4})') *.txt|%{$p,$s=$_.Path,$_.Line -replace $r, '$3-$2-$1';...}
В переменную $p заносится путь до файла, в $s - измененная строка. Ну, а далее останется все это дело передать на запись.

Отправлено: 17:36, 23-05-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - преобразование формата даты в текстовом файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Ошибка в текстовом файле Innuenze Microsoft Windows 2000/XP 2 11-08-2014 09:35
CMD/BAT - unix epoch. переформатирование даты в нормальную в текстовом файле shmel_sv@vk Скриптовые языки администрирования Windows 8 14-04-2014 17:25
подсчёт слов в текстовом файле bakatum Хочу все знать 4 22-01-2010 21:10
Разное - Преобразование одного формата файла в другой Evgesha_572 Программирование и базы данных 3 04-02-2009 14:57
Изменение формата даты Ilya S Программное обеспечение Windows 2 12-11-2007 11:13




 
Переход