Мне нужен сценарий CMD или Powershell или командный файл для

  • просмотреть список файлов
  • сделать папку с именем файла, если он еще не существует, затем
  • переместите этот файл в соответствующую папку.

У меня есть список около 400 файлов, как это:

Используя это в качестве примера, сценарий должен создать папку, включающую два верхних файла с именем 2018-05-16 , папку с 3 следующими файлами с именем 2018-05-17 и т.д. Предпочтительно в той же папке, что и файлы, расположенные сейчас. ,

Я на Windows 8, если это имеет значение.

1 ответ1

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')

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