我是PS的新手。我发现扫描目录(或递归目录)的脚本并获取文件的最后修改日期属性,但我无法根据此日期创建目录。我想要完成的是这样的事情:
日期-----------文件
2012-01-03 fax1.mfs
2012-01-04 fax2.mfs
2012-01-04 fax3.mfs
创建以下目录:
2012-01-03
2012-01-04
一旦我们有了这个,我们可以使用另一个脚本根据上次修改日期移动文件。
这是我到目前为止所创造的:
Get-ChildItem -Path C:\temp\path | Foreach {$_.LastWriteTime.tostring("MM-dd-yyyy")}
以字符串格式MM-dd-yyyy给出日期。我只需将其作为变量传递给类似
的变量| % {New-Item -Name ($_).tostring("MMddyyyy") -ItemType directory}
哪些错误输出并且不创建任何目录。
非常感谢任何帮助。
答案 0 :(得分:1)
这样的事情怎么样:
$Path = 'C:\temp\path'
Get-ChildItem $Path | Foreach-Object {mkdir "$Path\$($_.LastWriteTime.ToString('MM-dd-yyyy'))" -ErrorAction SilentlyContinue}
答案 1 :(得分:1)
基本上在狂汤姆叶片相同,但拉LastWriteTime作为一个单独的流水线级,并用显式的属性值调用的newitem。不那么简洁,但可以说更具可读性。
$p = "h:\temp\240214" get-childitem -Path $p | Select-Object -ExpandProperty LastWriteTime | foreach-object { New-Item -Path $p -Name $_.ToString("yyyy-MM-dd") -ItemType Directory -ErrorAction SilentlyContinue }
解决将文件移动到适当文件夹的后续问题......
$p = "h:\temp\240214" get-childitem -Path $p | Where-Object { ! ($_.PSIsContainer) } | ForEach-Object { $newDir = join-path $p ($_.LastWriteTime).ToString("yyyy-MM-dd") New-Item -Path $newDir ` -ItemType Directory ` -ErrorAction SilentlyContinue $_ | Move-Item -Destination $newDir }