Jak zmienić datę utworzenia pliku tekstowego (a / kilka), a następnie zachować go po skopiowaniu na inny komputer

0

Mam kilka plików tekstowych i chcę zmienić datę utworzenia tych plików. Występuje kilka problemów, więc byłbym wdzięczny za radę w mojej sprawie.

Najpierw znalazłem to rozwiązanie, aby zmienić datę utworzenia jednego pliku. Polega na uruchomieniu programu PowerShell (Windows 10) za pomocą

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

To działa. Więc mam dwa problemy. Po pierwsze, jak to zrobić dla tysiąca plików? Musi zostać zautomatyzowany, inaczej zajęłoby to zbyt wiele czasu.

Druga kwestia jest jednak o wiele ważniejsza. Gdy zmienię datę utworzenia tego pliku, jeśli skopiuję go do innej lokalizacji, skopiowany plik został przywrócony do dzisiaj. Co gorsza, muszę skopiować te 10000 plików (ze zmienionymi datami ich utworzenia) do systemu Windows 7 i mieć te pliki ze starymi czasami tworzenia. Ale jeśli zamierzają wrócić do dzisiejszego dnia i nie będę miał tam PowerShell, jak mogę rozwiązać mój problem?

KansaiRobot
źródło

Odpowiedzi:

0

Wszystkie odpowiedzi, których szukasz, znajdują się w plikach pomocy programu 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

Lub po prostu użyj wbudowanej robocopy, aby skopiować źródło do miejsca docelowego.

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

Spójrz na opcje przełączników / COPY: [copyflags] i / 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.
postanote
źródło