次のスクリプトを実行して、ディレクトリ内のファイル名の最初の9文字に基づいてディレクトリを作成し、ファイル名に基づいてこれらのディレクトリにファイルを移動します。
dir | %{
$id = $_.Name.SubString(0,9);
if(-not (Test-Path $id)) {mkdir $id};
mv $_ "$id\$_";}
今、私が見つけたのは、スクリプトを実行した後、フォルダーが過去数年のLastWriteTimeでマークされていることです。
ここにPowershellからの出力があります
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 13/04/2006 7:25 PM XXX095_00
d---- 13/04/2006 7:29 PM XXX285_0_
このLastWriteTimeがどこから来たのか誰にも教えてもらえますか?
PCの時計が正しい日付と時刻に設定されていますか?デフォルトでは、現在の時刻が表示されるはずであり、そうしない理由は考えられません(明示的に上書きされない限り)。
—
マリオ
get-dateは現在の日付と時刻を提供します。
—
ネイト
タイムスタンプの無効化、再起動、有効化、再起動を試して、ルートの問題がNTFSであるかどうかを確認しますgroovypost.com/howto/microsoft/…–
—
オースティンT
さて、私はついに歴史的な時代がどこから来たのかを突き止めました。これらのファイルはすべて、ファイバー接続ストレージアレイ上にあり、時間が経ちませんでした。OSが正しい時間を持っていたとしても、PSはthe.arrayから時間を取っています。これですべて良いです。
—
ネイト