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

Сначала я нашел это решение, чтобы изменить дату создания одного файла. Это включает запуск PowerShell (Windows 10) с

 (Get-Item test2.txt).creationtime=$(Get-Date "1/2/2016 12
:34 am")

Оно работает. Итак, у меня есть две проблемы. Во-первых, как это сделать с тысячей файлов? Это должно быть автоматизировано, или это займет слишком много времени.

Второй вопрос, однако, гораздо важнее. После того, как я изменил дату создания этого файла, если я скопирую его в другое место, его копии будут возвращены на сегодняшний день. Что еще хуже, я должен скопировать эти 10000 файлов (с измененными датами их создания) в систему Windows 7, и эти файлы были со старым временем создания. Но если они вернутся к сегодняшнему дню, и у меня там не будет PowerShell, как я могу решить свою проблему?

1 ответ1

0

Все ответы, которые вы получите, находятся в справочных файлах PowerShell.

# Get a list of all functions
Get-Command -CommandType Function | 
Out-GridView -PassThru -Title 'Available functions'


# Get a list of all commandlets
Get-Command -CommandType Cmdlet | 
Out-GridView -PassThru -Title 'Available cmdlets'


# Get a list of all functions for the specified name
Get-Command -Name '*ADGroup*' -CommandType Function | 
Out-GridView -PassThru -Title 'Available named functions'


# Get a list of all commandlets for the specified name
Get-Command -Name '*ADGroup**'  -CommandType Cmdlet | 
Out-GridView -PassThru -Title 'Available named cmdlet'


# get function / cmdlet details
(Get-Command -Name Get-ChildItem).Parameters
Get-help -Name Get-ChildItem -Examples
Get-help -Name Get-ChildItem -Full
Get-help -Name Get-ChildItem -Online


(Get-Command -Name ForEach).Parameters
Get-help -Name ForEach -Examples
Get-help -Name ForEach -Full
Get-help -Name ForEach -Online


(Get-Command -Name Copy-Item).Parameters
Get-help -Name Copy-Item -Examples
Get-help -Name Copy-Item -Full
Get-help -Name Copy-Item -Online


# Get parameter that accept pipeline input
Get-Help Get-ChildItem -Parameter * | 
Where-Object {$_.pipelineInput -match 'true'} | 
Select * 


Get-Help about_*
Get-Help about_Functions

Или просто используйте встроенную robocopy для копирования источника в место назначения.

robocopy <Source> <Destination> [<File>[ ...]] [<Options>]

Посмотрите на параметры для ключей /COPY:[copyflags] и /DCOPY.

# As per the ROBOCOPY /? usage info:
/COPY:copyflag[s] :: what to COPY for files (default is /COPY:DAT).
                      (copyflags : D=Data, A=Attributes, T=Timestamps).
                      (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).

/DCOPY:T :: COPY Directory Timestamps.


# For example:
ROBOCOPY c:\src d:\dest /MIR /COPY:DT /DCOPY:T


# Will copy all files and folders and preserve the date and time stamps.
ROBOCOPY c:\src d:\dest /MIR /COPY:DAT /DCOPY:T


Will copy all files and folders and preserve the date & time stamps and file attributes.

There is also another (and I believe deprecated?) switch /TIMFIX which does much the same as /COPY:DT but it doesn't fix the time stamps on folders.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .