Найти тему
Ты ж программист!

Изменяем дату создания файлов или папок

Оглавление

Снова здравствуйте. Вы находитесь на канале Ты ж программист!✨, где просто и доступно поделюсь своим опытом и расскажу о различных лайфхаках.

Сегодня расскажу, какими способами обычно пользуюсь для изменения даты создания и изменения файлов и папок.

-2

Такие свойства или же атрибуту файла или папки, как дата создания или дата изменения - недоступные на первый взгляд к редактированию, защищённые системой.

Но есть способы менять их и не только дату, но и время файлов.

💾Способ для новичков и любителей графики

Есть маленькая программка - FileDate Changer. Качать только с официального сайта - утилита абсолютно бесплатная.

Не советую тянуть с других источников и уж точно не уверен в их надёжности, как и последствиях.

Хороша программа и проста, но меняет только атрибуты у файлов. Для папок, к сожалению, не работает.

-3
  1. Нажимаем на кнопку Add files и выбираем нужные нам файлы или один файл.
  2. Определяемся, какие атрибуты менять.
    Created Date - дата создания
    Modified Date - дата изменения
    Accessed Date - дата открытия
  3. Изменяем на нужные нам значения и не забываем о флажке Change
  4. Жмём кнопку Change Files Date.

В результате получим файлы с изменёнными датами.

-4

💾Способ через Powershell

Благодаря инструменту Powershell a.k.a. Bush в линуксе, можно изменять любой атрибут и у любых объектов, даже папок.

Первым делом необходимо открыть Powershell ISE: Пуск /Поиск -> Powershell ISE. Сверху на панели выбрать Вид-> Отобразить панель сценариев для доступа к скриптописанию.

Полдела уже сделано. Осталось за малым 😊. Сначала посмотрим, какие свойства есть у файлов и папок, чтобы знать, что нам изменять.

Команды ниже вставлять в белое поле, сюда:

-6

Используем следующую команду, в кавычках указываем путь нужной директории, где будем менять файл/ы.

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
66,2 тыс интересуются