Як я можу змінити часову позначку у файлі? [дублікат]


74

Можливий дублікат:
Як змінити часову позначку в dll або exe?
Windows еквівалент команди "touch" Linux?

Як я можу встановити часову позначку для файлу за допомогою командного рядка на певну дату?

Моя конкретна ситуація - Windows 7.


1
Вам, мабуть, слід уточнити своє запитання та заявити, що ви бажаєте вибрати нову мітку часу. Два поточні відповіді припускають, що ви шукаєте порт Windows команди Unix, touchякий встановлює часові позначки файлів на поточний час.
Вільям Джексон

Я переглянув Sysinternals, і я майже впевнений, що вони не мають корисного для цього. Спробуйте скористатись програмами, пов’язаними з superuser.com/questions/135901/…
William Jackson

@William Jackson Змінився, дякую за це. Крім того, якщо це справді був порт команди Unix touch, я міг би вказати дату. en.wikipedia.org/wiki/Touch_(Unix) . Щось не в порядку з автоматичним посиланням, не забудьте отримати обидві дужки.
Джозеф Хансен

1
Я ... не можу повірити, що я ніколи не намагався читати man touch. Ви навчили мене чомусь новому.
Вільям Джексон

Відповіді:


92

Завдяки відповіді Вільяма Джексона , я знайшов подібне запитання щодо Stack Overflow .

У прийнятому відповіді держава використовувати Powershell і наступні команди:

$(Get-Item ).creationtime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastaccesstime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastwritetime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")

Редагувати

Два приклади:

(Цей з коментарів :) Встановіть час останнього доступу до файлу aaa.csvна поточний час:

$(Get-Item aaa.csv).lastwritetime=$(Get-Date)

Встановіть час створення файлу foo.txtна 24 листопада 2015 року на 6:00 ранку:

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")

8
Незначна варіація, яка є рекурсивною і трохи коротшою, хоча і менш читаною: "gci -rec |% {$ _. LastWriteTime = ($ _. LastAccessTime = ($ _. CreateTime = (get-date" 2011-09-14T07: 10:00 ")))}"
codybartfast

9
Для людей, які мало знають про Powershell, вам потрібно поставити ім'я файлу після Get-Item. Ви також можете опустити рядок після Get-Date, щоб встановити атрибут на поточну дату / час, як поведінка за замовчуванням сенсорної команди. Нарешті, ви можете передати цей код як аргумент команді powershell, щоб він просто виконав його з існуючого пакетного файлу. Приклад:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha

1
Що робити, якщо я хочу зробити це для кожного файлу в каталозі?
CodyBugstein

Шукати "Потужність кожного файлу". Ви можете знайти такі питання: stackoverflow.com/q/16804265/756329 та stackoverflow.com/q/181036/756329
Джозеф Хансен,

4
Формат дати та часу не у відповідності до команди, а у всій системі (так, у моїй системі це було dd / mm / yyy).
Мартін Арджерамі

40

Дивіться відповіді на це питання .

Зокрема, це можна зробити в домашніх умовах за допомогою:

copy /b filename.ext +,,

Це встановить часову позначку на поточний час.

Документація для copyкоманди знаходиться на TechNet .

Коми вказують на пропуск параметра Параметр призначення .


2
Чи можете ви пояснити, як це працює? Що таке +,,? Як я можу дізнатися, на яку дату призначено?
Джозеф Хансен

1
@josmh Перегляньте посилання на документацію для отримання детальної інформації. Часова позначка встановлюється на поточний час, коли ви запускаєте команду. Ви маєте на увазі, що ви хочете мати можливість змінити часову позначку на обраний вами час?
Вільям Джексон

7
Я не бачу, як це допомагає мені вибрати нову дату для файлу?
Джозеф Хансен

Основна проблема з цим полягає в тому, що файл не знаходиться в поточному каталозі ... він скопіює файл у поточний каталог, а не "торкнеться" його на місці.
Спікер Кейсі

1
@KaseySpeakman - ця команда покладається на те, що знаходиться у поточному каталозі. Використовуйте pushd FILEDIRперед командою та popdпісля
Тидеєм

25

Nirsoft на допомогу: спробуйте безкоштовний інструмент nircmd . Це купа корисних інструментів в одній невеликій програмі командного рядка. Одна з команд дозволяє вказати один або обидва створеного часу та модифікованого часу , наприклад:

nircmd.exe setfiletime "c: \ temp \ myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"


3
Крім того, якщо ви хочете перенести час з файлу в інший, файл клонування файлів з файлу, щоб найкраще працювати!
JasonXA

Не командний рядок, але зручніший для групового редагування: BulkFileChanger від
Nirsoft

15

Використовуючи Cygwin, для встановлення часової позначки test.txt на 31 січня 2000 року о 00: 01.00:

touch -t 200001310001.00 test.txt

Це повертається з помилковою помилкою формату дати.
зиггі

@ziggy переконайтеся, що ви отримаєте всі нулі ...
Джозеф Хансен

2
Це прекрасно працювало для мене, touch -t 201608221400 filenameщоб встановити його на 22.08.2016 14:00:00.
СебастьянH

1

Перегляньте таку веб-сторінку: http://www.stevemiller.net/apps/

Панель інструментів консолі Win32 містить утиліту під назвою "touch", яка дозволяє змінювати час на одному чи кількох файлах. Я вважаю, що це працює лише в американському форматі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.