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

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата mihailov_den@vk:
Дату можно брать из названия файла. Формат даты 2019-01-20 , единый »
т.е. у всех файлов, созданных в один день, имена одинаковые? В файловой системе такой коллизии существовать не может, файлы будут просто перезаписывать один и тот же файл:
2019-01-20.jpg

Ок, примем за формат имен файлов это:
Цитата mihailov_den@vk:
файл имеет имя 2019-01-15_151941 »
т.е. yyyy-MM-dd_HHmmss
тогда скрипт будет примерно таким:
Код: Выделить весь код
$src = 'TEST1'
$dst = 'TEST2'
$flt = '*.*'
dir $src -filt $flt -file|%{
	$fname = $_.name
	try {
		$dstf = $dst + '\' + (
			'{0:yyyy_MM_dd}' -f ([datetime]::parseexact($_.basename, 'yyyy-MM-dd_HHmmss', $null))
		)
		if (!(test-path $dstf -patht container)){md $dstf|out-null}
		if (test-path ($a = $dstf+'\'+$_.name) -patht leaf){
			if ($_.lastwritetime -gt (gi $a).lastwritetime){
				cp $_.fullname $dstf -force
			}
		} else {cp $_.fullname $dstf}
	} catch {
		write-host 'Произошла ошибка! Проверьте формат даты в имени файла: ' -for red -non
		write-host $fname -for cyan
	}
}

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 21-01-2019 в 13:15. Причина: добавлено сравнение даты изменения одноименных файлов

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:55, 21-01-2019 | #8