Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Присвоить дате изменения папке новую дату (http://forum.oszone.net/showthread.php?t=310021)

ALARMus 06-01-2016 13:46 2591722

Присвоить дате изменения папке новую дату
 
Как присвоить дате изменения папки дату её создания (папок много - так что для всех бы)

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

Charg 06-01-2016 14:06 2591737

Цитата:

Цитата ALARMus
Как присвоить дате изменения папки дату её создания (папок много - так что для всех бы) »

http://www.petges.lu/home/download/

Iska 06-01-2016 15:33 2591769

Цитата:

Цитата 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
}


ALARMus 06-01-2016 16:14 2591785

Цитата:

Цитата Iska
Скриптом на PowerShell, по типу: »

Спасибо.
Только вот надо проделать это в такой структуре:

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

Казбек 06-01-2016 16:23 2591787

ALARMus,
BulkFileChanger

Iska 07-01-2016 02:51 2591945

Цитата:

Цитата ALARMus
Спасибо.
Только вот надо проделать это в такой структуре: »

ALARMus, это был примеркак это делается, а не готовый под Ваши условия скрипт.

Цитата:

Цитата ALARMus
Т.е. присвоить для всех папок содержащих файл. »

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

Цитата:

Цитата ALARMus
и в каждой такой "именной" папке лежит собственно видео файл. »

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

Iska 07-01-2016 05:23 2591956

Вот общий принцип:
Код:

$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 2592039

Спасибо за ответ.

Цитата:

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

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

Iska 08-01-2016 06:17 2592336

Цитата:

Цитата ALARMus
1) файл в каждой папке один - поэтому не отвечаю на вопрос "а если файл не один ?"
2) конкретика про видео файл в данном случае совершенно не имеет значения - для задачи: "взять дату файла" »

ALARMus, этого достаточно. Тогда код из сообщения №7 — для Вас.

ALARMus 08-01-2016 08:56 2592349

Цитата:

Цитата Iska
Тогда код из сообщения №7 — для Вас »

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

mwz 09-01-2016 00:18 2592621

Цитата:

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

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

ALARMus 09-01-2016 15:21 2592772

Цитата:

Цитата mwz
Ещё вариант »

да спасибо в 5 посте уже дали на него ссыллку

Iska 09-01-2016 15:39 2592781

Цитата:

Цитата ALARMus
да спасибо в 5 посте уже дали на него ссыллку »

Там немного другое.

mwz 09-01-2016 21:30 2592917

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

ALARMus 10-01-2016 03:03 2593014

Цитата:

Цитата Iska
Там немного другое »

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

Iska 10-01-2016 11:00 2593044

Цитата:

Цитата ALARMus
а описательная часть вверху под заголовком See Also как раз этот файл. »

«See also» — «Смотри также». Если Вы уже посмотрели — тем лучше ;).


Время: 20:34.

Время: 20:34.
© OSzone.net 2001-