Присвоить дате изменения папке новую дату
Как присвоить дате изменения папки дату её создания (папок много - так что для всех бы)
и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла
|
Цитата:
Цитата ALARMus
и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла »
|
Скриптом на 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
}
|
Цитата:
Цитата Iska
Скриптом на PowerShell, по типу: »
|
Спасибо.
Только вот надо проделать это в такой структуре:
Папка содержит множество папок, каждая из которых содержит в себе файл. Т.е. присвоить для всех папок содержащих файл.
К примеру Папка Film4 содержит кучу папок (названных по имени фильма) и в каждой такой "именной" папке лежит собственно видео файл.
|
Цитата:
Цитата ALARMus
Спасибо.
Только вот надо проделать это в такой структуре: »
|
ALARMus, это был пример — как это делается, а не готовый под Ваши условия скрипт.
Цитата:
Цитата ALARMus
Т.е. присвоить для всех папок содержащих файл. »
|
Какой именно файл? Например, в папке два файла. Какой из них выбрать?
Цитата:
Цитата ALARMus
и в каждой такой "именной" папке лежит собственно видео файл. »
|
«видео файл» — понятие растяжимое. Нужна конкретика.
|
Вот общий принцип:
Код:
$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. Вопросы моего предыдущего сообщения остаются в силе.
|
Спасибо за ответ.
Цитата:
Цитата Iska
P.S. Вопросы моего предыдущего сообщения остаются в силе. »
|
Касательно доп. вопросов, я старался не вступать в дискуссию по этому поводу. Это похвально, что у Вас привита такая хорошая черта - сделать одно универсальное решение учитывающее все варианты. Но я оговорил именно свой конкретный, частный случай:
1) файл в каждой папке один - поэтому не отвечаю на вопрос "а если файл не один ?"
2) конкретика про видео файл в данном случае совершенно не имеет значения - для задачи: "взять дату файла"
|
Цитата:
Цитата ALARMus
1) файл в каждой папке один - поэтому не отвечаю на вопрос "а если файл не один ?"
2) конкретика про видео файл в данном случае совершенно не имеет значения - для задачи: "взять дату файла" »
|
ALARMus, этого достаточно. Тогда код из сообщения №7 — для Вас.
|
Цитата:
Цитата Iska
Тогда код из сообщения №7 — для Вас »
|
Спасибо еще раз.
|
Цитата:
Цитата ALARMus
и второй вариант посложнее
Как присвоить папке дату изменения равную дате лежащего в ней файла »
|
Ещё вариант — FolderTimeUpdate от Nir Sofer (как 32-, так и 64-битная версии). Русификатор в конце страницы. Есть некоторое количество настроек (установка галками).
|
да спасибо в 5 посте уже дали на него ссыллку
|
Цитата:
Цитата ALARMus
да спасибо в 5 посте уже дали на него ссыллку »
|
Там немного другое.
|
ALARMus, утилита, которую я привёл, просматривает папку на выбранную глубину вложенности (от только первого уровня и вплоть до всей глубины), и присваивает папке и вложенным в неё время в соответствии либо с самым новым файлом на первом уровне любой из таких обрабатываемых папок, либо с самым новым файлом из всех по выбранной глубине.
|
именно тоже самое - просто не прямая ссылка на скачивание, а описательная часть вверху под заголовком See Also как раз этот файл. :)
|
Цитата:
Цитата ALARMus
а описательная часть вверху под заголовком See Also как раз этот файл. »
|
«See also» — «Смотри также». Если Вы уже посмотрели — тем лучше ;).
|
Время: 20:34.
© OSzone.net 2001-