Powershell LastWriteTime salah

2

Saya menjalankan skrip berikut untuk membuat direktori berdasarkan 9 karakter pertama dalam nama file dalam direktori dan kemudian memindahkan file te ke direktori ini berdasarkan nama file mereka.

dir | %{ 
    $id = $_.Name.SubString(0,9); 
    if(-not (Test-Path $id)) {mkdir $id}; 
    mv $_ "$id\$_";}

Sekarang, apa yang saya temukan adalah bahwa setelah menjalankan skrip folder ditandai dengan LastWriteTime beberapa tahun yang lalu.

Ini adalah output dari Powershell

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        13/04/2006   7:25 PM            XXX095_00
d----        13/04/2006   7:29 PM            XXX285_0_

Adakah yang bisa memberi tahu saya dari mana LastWriteTime ini berasal?

nate
sumber
Apakah Anda yakin jam PC Anda diatur ke tanggal dan waktu yang benar? Secara default itu akan menunjukkan waktu saat ini dan saya tidak bisa memikirkan alasan untuk itu tidak melakukannya (kecuali secara eksplisit ditimpa).
Mario
get-date memberikan tanggal dan waktu saat ini.
nate
Coba nonaktifkan prangko waktu, reboot, aktifkan, reboot, dan lihat apakah masalah dasarnya
Austin T French
Yah saya akhirnya berhasil dari mana masa bersejarah itu berasal. Semua file-file ini berada pada array penyimpanan serat terlampir dan waktu sudah jauh. Meskipun OS memiliki waktu yang tepat, PS mengambil waktu dari thearray. Jadi semuanya baik-baik saja sekarang.
nate

Jawaban:

3

Memindahkan file tampaknya tidak dihitung sebagai tulisan. Saya kira itu karena Anda tidak benar-benar menulis ke isi file. Tetapi Anda dapat memperbarui LastWriteTime sendiri. Coba ini:

dir | %{ 
    $id = $_.Name.SubString(0,9); 
    if(-not (Test-Path $id)) {mkdir $id};
    $_.LastWriteTime = Get-Date;           # <---- Added line.
    mv $_ "$id\$_";}

(Ngomong-ngomong, Anda tidak perlu titik koma, ketika pernyataan Anda berada di baris yang berbeda.)

dangph
sumber
1
Terima kasih untuk dangph itu, ini seharusnya menyelesaikan masalah, tapi saya akan berpikir OS akan mengurus LastWriteTime ini. Semua folder ini memiliki waktu modifikasi terakhir pada tahun 2014 sebelum pindah.
nate
1
@nate Ada 3 jenis "LastWriteTime" Ada LocalLastWriteTime, RemoteLastWriteTime, dan OriginalLastWriteTime. Mereka bertiga tinggal di Win32_OfflineFilesFileSysInfokelas. Mengenai PS yang digunakan adalah dugaan siapa pun (terutama karena modul inti PS dikompilasi dan tidak memiliki dokumentasi).
Colyn1337