Снова здравствуйте. Вы находитесь на канале Ты ж программист!✨, где просто и доступно поделюсь своим опытом и расскажу о различных лайфхаках.
Сегодня расскажу, какими способами обычно пользуюсь для изменения даты создания и изменения файлов и папок.
Такие свойства или же атрибуту файла или папки, как дата создания или дата изменения - недоступные на первый взгляд к редактированию, защищённые системой.
Но есть способы менять их и не только дату, но и время файлов.
💾Способ для новичков и любителей графики
Есть маленькая программка - FileDate Changer. Качать только с официального сайта - утилита абсолютно бесплатная.
Не советую тянуть с других источников и уж точно не уверен в их надёжности, как и последствиях.
Хороша программа и проста, но меняет только атрибуты у файлов. Для папок, к сожалению, не работает.
- Нажимаем на кнопку Add files и выбираем нужные нам файлы или один файл.
- Определяемся, какие атрибуты менять.
Created Date - дата создания
Modified Date - дата изменения
Accessed Date - дата открытия - Изменяем на нужные нам значения и не забываем о флажке Change
- Жмём кнопку Change Files Date.
В результате получим файлы с изменёнными датами.
💾Способ через Powershell
Благодаря инструменту Powershell a.k.a. Bush в линуксе, можно изменять любой атрибут и у любых объектов, даже папок.
Первым делом необходимо открыть Powershell ISE: Пуск /Поиск -> Powershell ISE. Сверху на панели выбрать Вид-> Отобразить панель сценариев для доступа к скриптописанию.
Полдела уже сделано. Осталось за малым 😊. Сначала посмотрим, какие свойства есть у файлов и папок, чтобы знать, что нам изменять.
Команды ниже вставлять в белое поле, сюда:
Используем следующую команду, в кавычках указываем путь нужной директории, где будем менять файл/ы.
Get-ChildItem -Path "C:\test\1" | Get-Member -MemberType Properties
Выделил интересные нам. Об остальных можете изучить самостоятельно при желании.
- CreationTime - дата создания
- LastWriteTime - дата изменения
- LastAccessTime - дата открытия
Теперь для изменения одного файла (не папки, важно!) используем команду:
(Get-ChildItem -Path "C:\test\1\NewTextDocument.txt").CreationTime=("01.01.1666")
В кавычках так же указываем путь к файлу, включая расширение. Дата в скобках скорее всего будет преобразована в локальный формат данных на устройстве. С этим поаккуратнее! А то вместо дня измените месяц.
Вместо CreationTime можно поставить один из свойств, что на скриншоте выделены красным.
У Пиндосов 1/1/2020 означает первое января 2020, но загвоздка в 2/1/2020. Это вовсе не второе января, а первое февраля!
Теперь, когда научились менять дату у файлов - перейдём к тому, как это сделать для любых папок.
Команда почти такая же, только вместо дочерних объектов, просто объект в начале: (Get-Item вместо Get-ChildItem)
(Get-Item -Path "C:\test\1").CreationTime=("01.01.1666")
Это всё конечно прекрасно, но если в папке 100 файлов и еще 10 папок, у которых так же есть файлы, как быть тогда?
Придётся использовать команду:
$change = Get-ChildItem -Path "C:\test\1" -Recurse
ForEach($ch in $change){
$ch.CreationTime=("01.01.1666")
}
Первая строка - переменная, в которую будет записан массив из объектов, находящихся по указанному в кавычках пути рекурсивно, т.е. со всеми вложенными директориями и файлами.
Таким образом, этот скрипт изменит по указанному пути дату на 01.01.1666 для всех объектов внутри папки "1".
Ну вот и всё на сегодня. Спасибо за внимание и удачи всем в ваших проектах.
Возможно вас так же заинтересует:
- Семейство Windows, стиль аниме, маскот
- 5 правил безопасности от мошенничества
- День недели на панели задач, отключаем магазин Windows