Как изменить дату файла в Windows через PowerShell
Размер текста: A+ A-

Как изменить дату файла в Windows через PowerShell

Нажмите, чтобы оценить наш труд:
[Всего: 1 Средняя: 5]

В операционных системах Windows 10 и 11 каждый файл хранит системные метаданные, включая время его создания, последнего изменения и открытия, которые автоматически обновляются при любых операциях с данными.

Потребность изменить эти параметры вручную возникает при миграции архивов, восстановлении структуры документов или тестировании программного обеспечения, когда стандартные графические интерфейсы ОС не предоставляют инструментов для редактирования таких атрибутов. Ну, или, в ваших “темных делишках”, когда нужно скрыть даты своих манипуляций.

Классическая командная строка (CMD) не позволяет напрямую управлять временными метками файлов на произвольные значения, так как ее встроенные команды вроде copy способны лишь фиксировать текущее системное время при перезаписи, но не поддерживают задание конкретной произвольной даты или редактирование времени создания и доступа без привлечения сторонних утилит.

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

Для управления временными метками через PowerShell используется класс System.IO.File. Перед выполнением команд рекомендуется закрыть файл в других программах, чтобы избежать ошибок блокировки доступа.

  • Вызвать эту утилиту можно быстрее всего так: Win + R далее вводим powershell и далее Enter

Изменение даты создания файла

Чтобы изменить время создания файла, используется метод SetCreationTime.

В команде указывается абсолютный путь к файлу и желаемая дата в формате, который обрабатывает командлет Get-Date.

[System.IO.File]::SetCreationTime("C:\path\to\file.txt", (Get-Date "2026-09-11 14:30:00"))

пример:

[System.IO.File]::SetCreationTime("C:\Users\Администратор\Desktop\Файл.txt", (Get-Date "2026-09-11 14:30:00"))

Проверка успешности: Чтобы убедиться, что дата создания изменилась, нажмите правой кнопкой мыши по файлу, выберите «Свойства» и перейдите на вкладку «Подробно», либо выполните в PowerShell команду (Get-Item "C:\path\to\file.txt").CreationTime.

Изменение даты изменения файла

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

Для ее ручной корректировки применяется метод SetLastWriteTime.

[System.IO.File]::SetLastWriteTime("C:\path\to\file.txt", (Get-Date "2026-09-11 14:30:00"))


пример:

[System.IO.File]::SetLastWriteTime("C:\Users\Администратор\Desktop\Файл.txt", (Get-Date "2026-09-11 14:30:00"))

Проверка успешности: Откройте свойства файла в проводнике Windows на вкладке «Общие» или проверьте статус через консоль командой (Get-Item "C:\path\to\file.txt").LastWriteTime.

Изменение даты открытия файла

Дата последнего доступа фиксирует момент, когда файл открывался для чтения или просмотра.

Этот параметр изменяется с помощью метода SetLastAccessTime.

[System.IO.File]::SetLastAccessTime("C:\path\to\file.txt", (Get-Date "2026-07-20 18:00:00"))

пример:

[System.IO.File]::SetLastAccessTime("C:\Users\Администратор\Desktop\Файл.txt", (Get-Date "2026-07-20 18:00:00"))

Проверка успешности: Проверить актуальность даты открытия можно в PowerShell с помощью команды (Get-Item "C:\path\to\file.txt").LastAccessTime.

Массовое изменение метаданных файлов в папке

Чтобы применить изменение даты создания ко всем файлам в определенной папке, используется командлет Get-ChildItem в связке с циклом обработки ForEach-Object, который поочередно передает каждый файл в .NET-метод.

Пакетное изменение даты создания

Выполните следующий скрипт, указав реальный путь к папке и нужную дату:

Get-ChildItem -Path "C:\path\to\folder" -File | ForEach-Object {
[System.IO.File]::SetCreationTime($_.FullName, (Get-Date "2026-05-10 14:30:00"))
}

Например:

Get-ChildItem -Path "C:\Users\Администратор\Desktop\Новая папка (2)" -File | ForEach-Object {
[System.IO.File]::SetCreationTime($_.FullName, (Get-Date "2026-05-10 14:30:00"))
}

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

Проверка результата. Выведите список всех файлов в папке вместе с их датами создания, чтобы убедиться в успешности операции:
Get-ChildItem -Path "C:\path\to\folder" -File | Select-Object Name, CreationTime

Чтобы изменить дату создания одновременно для всех файлов и папок внутри директории, исключите фильтр -File и используйте прямое присваивание свойства через встроенные объекты PowerShell.

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

Массовое изменение в текущей директории

Выполните команду без ограничения по типу объектов:

Get-ChildItem -Path "C:\path\to\folder" | ForEach-Object {
$_.CreationTime = (Get-Date "2026-05-10 14:30:00")
}

Включая все вложенные подпапки

Если нужно пройтись по всей структуре вглубь (по всем дочерним папкам и их содержимому), добавьте флаг -Recurse:

Get-ChildItem -Path "C:\path\to\folder" -Recurse | ForEach-Object {
$_.CreationTime = (Get-Date "2026-05-10 14:30:00")
}

Возможные ошибки

Бывает, например, что PowerShell выдает ошибку, а когда его перезагружаешь, эта же команда работает без проблем.

Ошибка возникает из-за специфического бага в PowerShell при вставке русского текста (через Ctrl+V) в уже работающую консоль. Из-за особенностей кодировки командной строки (обычно консоль использует старую кодировку CP866) первый символ кириллицы вставляемой строки часто «теряется» или искажается.

Например, в вашем пути вместо слова администратор может подставиться дминистратор (пропадет первая буква «а»). Физически такой папки на диске не существует, поэтому PowerShell возвращает ошибку DirectoryNotFoundException.

Когда вы перезапускаете PowerShell, буфер ввода и состояние консоли сбрасываются, поэтому повторный ввод или вставка отрабатывают корректно.

Как это исправить и предотвратить:

  1. Используйте автодополнение по клавише Tab: Начните вводить путь вручную (например, написать C:\Users\адм и нажать Tab), PowerShell сам подставит правильное имя папки без потери символов.

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

chcp 65001

Проверка успешности: после выполнения команды введите chcp — должно вернуть значение 65001, после чего вставка путей с кириллицей будет работать стабильно.

Если chcp 65001 не помогает, значит, проблема кроется в баге старого консольного хоста Windows (conhost.exe), который некорректно обрабатывает буфер обмена при вставке кириллицы через Ctrl+V.

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

Нажмите, чтобы оценить наш труд:
[Всего: 1 Средняя: 5]

Я, Ирина Петрова-Левин, выпускница Московского Технического Университета Связи и Информатики, где получила образование в области информационных технологий. Мой профессиональный путь связан с языком Python, а также с глубоким интересом к тому, как современные технологии влияют на повседневную жизнь. Я стараюсь объяснять сложные процессы так, чтобы они становились понятными каждому, без потери точности и сути.

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.

О нас | Контакты


Прокрутить вверх