我正在运行以下脚本,根据目录中文件名的前 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 来自哪里?
答案1
移动文件似乎不算作写入。我猜那是因为你实际上并没有写入文件的内容。但你可以自己更新 LastWriteTime。试试这个:
dir | %{
$id = $_.Name.SubString(0,9);
if(-not (Test-Path $id)) {mkdir $id};
$_.LastWriteTime = Get-Date; # <---- Added line.
mv $_ "$id\$_";}
(顺便说一下,当您的语句位于单独的行上时,您不需要分号。)