2

Я запускаю следующий сценарий для создания каталогов на основе первых 9 символов в именах файлов в каталоге, а затем перемещаю файлы te в эти каталоги на основе их имен файлов.

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 приходит?

1 ответ1

3

Перемещение файла не считается записью. Я думаю, это потому, что вы на самом деле не пишете содержимое файла. Но вы можете обновить LastWriteTime самостоятельно. Попробуй это:

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

(Кстати, вам не нужны точки с запятой, когда ваши утверждения находятся в отдельных строках.)

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