答案1
之前的示例目录
> gci
Verzeichnis: A:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-05-16 16:02 14 GOPR0150.MP4
-a---- 2018-05-16 16:10 14 GOPR0151.MP4
-a---- 2018-05-17 01:25 14 GOPR0152.MP4
-a---- 2018-05-17 01:32 14 GOPR0153.MP4
-a---- 2018-05-17 01:32 14 GOPR0154.MP4
运行这个小型 PowerShell 脚本
## Q:\Test\2018\09\06\SU_1355955.ps
ForEach($File in (Get-ChildItem '.\GOPR*.mp4')){
$DestFolder = Join-Path $File.DirectoryName $File.LastWriteTime.ToString('yyyy-MM-dd')
if (!(Test-Path $DestFolder)){MD $DestFolder|Out-Null}
$File | Move-Item -Destination $DestFolder
}
> gci -recurse -file
Verzeichnis: A:\2018-05-16
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-05-16 16:02 14 GOPR0150.MP4
-a---- 2018-05-16 16:10 14 GOPR0151.MP4
Verzeichnis: A:\2018-05-17
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-05-17 01:25 14 GOPR0152.MP4
-a---- 2018-05-17 01:32 14 GOPR0153.MP4
-a---- 2018-05-17 01:32 14 GOPR0154.MP4
编辑:根据您当地的日期格式,您可能必须
改成.ToString('yyyy\-MM\-dd')
答案2
脚本无法识别 DestFolder,不知道我做错了什么。我还更改了日期格式。在命令提示符中运行,我得到以下内容
E:\Travel Videos\GOPRO\20221015>ForEach($File in (Get-ChildItem '.\GOPR*.mp4')){'ForEach' 未被识别为内部或外部命令、可操作程序或批处理文件。
E:\Travel Videos\GOPRO\20221015> $DestFolder = Join-Path $File.DirectoryName $File.LastWriteTime.ToString('dd\MM\yyyy') '$DestFolder' 未被识别为内部或外部命令、可操作程序或批处理文件。
E:\Travel Videos\GOPRO\20221015> if (!(Test-Path $DestFolder)){MD $DestFolder|Out-Null} $DestFolder)){MD 此时是意外的。
E:\Travel Videos\GOPRO\20221015> $File | Move-Item -Destination $DestFolder '$File' 未被识别为内部或外部命令、可操作程序或批处理文件。