PowerShell трогает все файлы новее, чем

3547
atwright147

Я нашел следующий вопрос на ServerFault:

Windows рекурсивная сенсорная команда

Который частично отвечает на мой вопрос с этим ответом:

Windows рекурсивная сенсорная команда

Тем не менее, я хотел бы коснуться всех файлов (в корневой и вложенных папках (рекурсивно)), которые новее, чем 31 января 2013 г. (31.01.13). Как бы я поступил так?

У меня есть PowerShell 2 доступны.

ОБНОВИТЬ:

Я обнаружил, что этот скриптлет получает все файлы, которые мне нужны:

Get-ChildItem C:\path\to\files -recurse | Where-Object { $_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM" } 

Но я не уверен, как объединить это с командой «touch»:

(ls file).LastWriteTime = DateTime.now 

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

(Get-ChildItem C:\path\to\files -recurse | Where-Object { $_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM" }).LastWriteTime = DateTime.now 

Так будет ли это работать?

2

1 ответ на вопрос

3
Austin T French

Powershell to use Unix touch seems silly to me.

Instead, just use native Powershell cmdlets.

This article covers it:

Essentially:

Get-ChildItem -Path $youFolder -Recurse | Foreach-Object { if ($_.LastWriteTime -ge [DateTime] "1/31/2013 9:00AM") { $_.LastWriteTime = Get-Date } } 

Should do the trick.

Извините, но я думаю, что вы пропустили суть моего вопроса. Я хочу отфильтровать файлы, которые новее указанной даты, а затем изменить их временную метку на сейчас. У меня есть код для обоих, но я не уверен, как их собрать. Пока спасибо за помощь. atwright147 10 лет назад 0
Извините, забыл проверить. Добавлено сейчас. По сути, это то, что вы просите, но вместо оператора where используется оператор If Austin T French 10 лет назад 0
Brilliant! Оно работает. Мне пришлось удалить все новые строки, чтобы запустить его из командной строки, но это сработало. atwright147 10 лет назад 0
Да, у меня это было в форме скрипта, поэтому чтобы запустить его из консоли, его нужно было перенести в однострочную форму. Austin T French 10 лет назад 0