Win Server 2012 PowerShell 4 сценарий для копирования, переименования и касания файла

784
Kenneth Berg

Я создал сценарий PowerShell 4 для резервного копирования файла Outlook 2013 VbaProject.OTM, скопировав его из рабочего каталога в каталог резервного копирования и добавив суффикс имени файла с текущей датой и временем. Скопированная версия имеет измененную дату и время первого сохранения VbaProject.OTM. Я потратил все утренние исследования на посты, пытаясь выяснить, как изменить свойство Date Modified файла резервной копии на текущую дату и время, но все, что я пробовал, просто заканчивается сообщениями об ошибках. Есть ли простой способ сделать это?

# FD_VBA_Backup.ps1 $date = get-date -format "MMddyyyy HHmm" $fnft = "VbaProject - " + $date + ".OTM" $source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM" $dest = "D:\FD Automation VBA Backups\" + $fnft copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM" 

Был похожий вопрос о том, как создать пустой файл и установить свойство date. Решение моего вопроса также было в одной строке, но найти его было нелегко. Название другого вопроса не делает очевидным, что решение можно найти внутри, так как мне нужно изменить дату в существующем файле, а не создавать новый файл. Ссылка: эквивалент Linux `touch` для создания пустого файла с PowerShell? ,

0
[Эквивалент Linux \ `touch \` для создания пустого файла с PowerShell?] (Http://superuser.com/a/571154) DavidPostill 8 лет назад 0
Не совсем. Эквивалент Unix touch для изменения свойства Date Modified файла, который я только что скопировал (который содержит дату исходного файла вместе с ним). Kenneth Berg 8 лет назад 0
Тогда ваш вопрос неясен. Я думал, что вы хотите ** установить метку даты изменения файла резервной копии на текущую дату и время **? Вот что делает связанный ответ - создает новый файл, если он не существует, или ** обновляет временную метку, если он существует **. Если вы имеете в виду что-то еще, пожалуйста, уточните свой вопрос. DavidPostill 8 лет назад 0
Извините, я только что прочитал название ссылки и отвечал на тот факт, что я не создаю пустой файл. Я попробую код в связанном посте. Kenneth Berg 8 лет назад 0
Нет проблем. Вы можете удалить большую часть скрипта и использовать только тот бит, который вам нужен;) Что-то вроде `(Get-ChildItem $ dest) .LastWriteTime = Get-Date`? DavidPostill 8 лет назад 0
@DavidPostill Да, это сработало отлично. `(Get-ChildItem $ file) .LastWriteTime = Get-Date` Спасибо. Kenneth Berg 8 лет назад 0
возможный дубликат [Эквивалент Linux \ `touch \` для создания пустого файла с PowerShell?] (http://superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty- файл-с-PowerShell) DavidPostill 8 лет назад 0

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

0
Kenneth Berg

С благодарностью @DavidPostill:

# FD_VBA_Backup.ps1 $date = get-date -format "MMddyyyy HHmm" $fnft = "VbaProject - " + $date + ".OTM" $source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM" $dest = "D:\FD Automation VBA Backups\" + $fnft copy-item $source $dest # results in eg. "VbaProject - 07202015 0936.OTM"  (Get-ChildItem $dest).LastWriteTime = Get-Date