PDA

Показать полную графическую версию : Присвоить дате изменения папке новую дату


ALARMus
06-01-2016, 13:46
Как присвоить дате изменения папки дату её создания (папок много - так что для всех бы)

и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла

Charg
06-01-2016, 14:06
Как присвоить дате изменения папки дату её создания (папок много - так что для всех бы) »
http://www.petges.lu/home/download/

Iska
06-01-2016, 15:33
и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла »
Скриптом на PowerShell, по типу:
$sSourceFolder = 'C:\Мои проекты\02\Мама мыла раму'
$sSourceFile = 'Мы не рабы.txt'

if(Test-Path -Path $sSourceFolder -PathType Container) {
$oDirectoryInfo = Get-Item -Path $sSourceFolder

$sSourceFilePath = Join-Path -Path $sSourceFolder -ChildPath $sSourceFile

if(Test-Path -Path $sSourceFilePath -PathType Leaf) {
$oDirectoryInfo.LastWriteTime = (Get-Item -Path $sSourceFilePath).LastWriteTime
} else {
# Not found
}
} else {
# Not found
}

ALARMus
06-01-2016, 16:14
Скриптом на PowerShell, по типу: »
Спасибо.
Только вот надо проделать это в такой структуре:

Папка содержит множество папок, каждая из которых содержит в себе файл. Т.е. присвоить для всех папок содержащих файл.
К примеру Папка Film4 содержит кучу папок (названных по имени фильма) и в каждой такой "именной" папке лежит собственно видео файл.

Казбек
06-01-2016, 16:23
ALARMus,
BulkFileChanger (http://www.nirsoft.net/utils/bulk_file_changer.html)

Iska
07-01-2016, 02:51
Спасибо.
Только вот надо проделать это в такой структуре: »
ALARMus, это был пример — как это делается, а не готовый под Ваши условия скрипт.

Т.е. присвоить для всех папок содержащих файл. »
Какой именно файл? Например, в папке два файла. Какой из них выбрать?

и в каждой такой "именной" папке лежит собственно видео файл. »
«видео файл» — понятие растяжимое. Нужна конкретика.

Iska
07-01-2016, 05:23
Вот общий принцип:
$sSourceFolder = 'C:\Мои проекты\02'

if(Test-Path -Path $sSourceFolder -PathType Container) {
Get-ChildItem -Path $sSourceFolder | Where-Object -FilterScript {$_.PSIsContainer} | ForEach-Object -Process {
$oFileInfos = Get-ChildItem -Path $_.FullName | Where-Object -FilterScript {-not $_.PSIsContainer}

if($oFileInfos.Count -gt 0) {
Write-Host "$($_.FullName): set LastWriteTime from [$($_.LastWriteTime)] to [$($oFileInfos[0].LastWriteTime)]."
$_.LastWriteTime = $oFileInfos[0].LastWriteTime
} else {
Write-Host "Can't find any file in folder [$($_.FullName)]." -ForegroundColor Red
}
}
} else {
Write-Host "Can't find source folder [$sSourceFolder]." -ForegroundColor Red
}
Для указанной папки получаем перечень вложенных папок первого уровня. В этом перечне для каждой из папок ищем файлы. Если найден хотя бы один файл, берём первый из них (для NTFS — это будет всегда первый по алфавиту) и присваиваем дате/времени последней модификации родительской для него папки дату/время последней модификации этого файла.

P.S. Вопросы моего предыдущего сообщения остаются в силе.

ALARMus
07-01-2016, 14:21
Спасибо за ответ.

P.S. Вопросы моего предыдущего сообщения остаются в силе. »
Касательно доп. вопросов, я старался не вступать в дискуссию по этому поводу. Это похвально, что у Вас привита такая хорошая черта - сделать одно универсальное решение учитывающее все варианты. Но я оговорил именно свой конкретный, частный случай:
1) файл в каждой папке один - поэтому не отвечаю на вопрос "а если файл не один ?"
2) конкретика про видео файл в данном случае совершенно не имеет значения - для задачи: "взять дату файла"

Iska
08-01-2016, 06:17
1) файл в каждой папке один - поэтому не отвечаю на вопрос "а если файл не один ?"
2) конкретика про видео файл в данном случае совершенно не имеет значения - для задачи: "взять дату файла" »
ALARMus, этого достаточно. Тогда код из сообщения №7 — для Вас.

ALARMus
08-01-2016, 08:56
Тогда код из сообщения №7 — для Вас »

Спасибо еще раз.

mwz
09-01-2016, 00:18
и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла »

Ещё вариант — FolderTimeUpdate (http://www.nirsoft.net/utils/folder_time_update.html) от Nir Sofer (как 32-, так и 64-битная версии). Русификатор в конце страницы. Есть некоторое количество настроек (установка галками).

ALARMus
09-01-2016, 15:21
Ещё вариант »
да спасибо в 5 посте уже дали на него ссыллку

Iska
09-01-2016, 15:39
да спасибо в 5 посте уже дали на него ссыллку »
Там немного другое.

mwz
09-01-2016, 21:30
ALARMus, утилита, которую я привёл, просматривает папку на выбранную глубину вложенности (от только первого уровня и вплоть до всей глубины), и присваивает папке и вложенным в неё время в соответствии либо с самым новым файлом на первом уровне любой из таких обрабатываемых папок, либо с самым новым файлом из всех по выбранной глубине.

ALARMus
10-01-2016, 03:03
Там немного другое »
именно тоже самое - просто не прямая ссылка на скачивание, а описательная часть вверху под заголовком See Also как раз этот файл. :)

Iska
10-01-2016, 11:00
а описательная часть вверху под заголовком See Also как раз этот файл. »
«See also» — «Смотри также». Если Вы уже посмотрели — тем лучше ;).




© OSzone.net 2001-2012