首页 文章

Powershell - 如何根据文件的上次修改日期创建目录?

提问于
浏览
0

我是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}

哪个错误输出并且不创建任何目录 .

任何帮助将不胜感激 .

2 回答

  • 1

    Mad Tom Vane基本相同,但将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
        }
    
  • 1

    这样的事情怎么样:

    $Path = 'C:\temp\path'
    Get-ChildItem $Path | Foreach-Object {mkdir "$Path\$($_.LastWriteTime.ToString('MM-dd-yyyy'))" -ErrorAction SilentlyContinue}
    

相关问题