none
Перемистить файлы из подмножества папок в одну папку RRS feed

  • Вопрос

  • Здравствуйте

    Есть папка в ней очень много подпапок и в каждой папке есть разные типы файлов , нужно вынуть только определенный тип файла (*.ML) и переместить в папку c:\IMPORT_ML\ , как можно реализовать данный функционал ?

    Заранее благодарен !

    27 октября 2014 г. 19:28

Ответы

  • $findfolder = "C:\temp\findf\"
    $destfolder = "C:\temp\dest"
    Get-ChildItem -Path $findfolder -Include *.ml -Recurse |foreach {
        $name = $_.name
        if (test-path "$destfolder\$name"){
            $filename = ($name -split '\.')[0]
            $count = (Get-ChildItem -Path $destfolder -Filter "$filename*" | measure).count
            $fullfilename = "$filename-Copy-$count.ml"
            Rename-Item -Path "$destfolder\$name" -NewName "$destfolder\$fullfilename"
            Move-Item $_ -Destination $destfolder
        }
        else {Move-Item $_ -Destination $destfolder}
    }

    Попробуйте как то так

    В вашем случае нужно сменить 2 переменные $findfolder - место где производить поиск, и $destfolder - место куда перекладывать файлы


    • Изменено Vector BCOModerator 28 октября 2014 г. 12:24
    • Предложено в качестве ответа Vector BCOModerator 30 октября 2014 г. 10:16
    • Помечено в качестве ответа KazunEditor 31 октября 2014 г. 5:45
    28 октября 2014 г. 12:22
    Модератор

Все ответы

  • Get-ChildItem -Path "D:\Your path\" -Include *.ml -Recurse | Move-Item -Destination c:\IMPORT_ML\ 

    Учтите что файлы должны называться по разному в противном случае будет перемещен только один из файлов

    Если вам все равно на содержимое файлов одинаковых по названию можно в конец добавить ключик 

    -Force

    В таком случае файлы с одинаковыми именами будут затираться следующими файлами с такими же именами

    Можно сделать проверку на наличие такого файла в каталоге и изменение имени например: "123_ copy_2.ml" при наличии файла "123.ml"

    P.S. PowerShell
    27 октября 2014 г. 22:28
    Модератор
  • Спасибо , сегодня попробую ,а как добавить в строку чтобы добавлялось слово copy ?
    28 октября 2014 г. 4:56
  • $findfolder = "C:\temp\findf\"
    $destfolder = "C:\temp\dest"
    Get-ChildItem -Path $findfolder -Include *.ml -Recurse |foreach {
        $name = $_.name
        if (test-path "$destfolder\$name"){
            $filename = ($name -split '\.')[0]
            $count = (Get-ChildItem -Path $destfolder -Filter "$filename*" | measure).count
            $fullfilename = "$filename-Copy-$count.ml"
            Rename-Item -Path "$destfolder\$name" -NewName "$destfolder\$fullfilename"
            Move-Item $_ -Destination $destfolder
        }
        else {Move-Item $_ -Destination $destfolder}
    }

    Попробуйте как то так

    В вашем случае нужно сменить 2 переменные $findfolder - место где производить поиск, и $destfolder - место куда перекладывать файлы


    • Изменено Vector BCOModerator 28 октября 2014 г. 12:24
    • Предложено в качестве ответа Vector BCOModerator 30 октября 2014 г. 10:16
    • Помечено в качестве ответа KazunEditor 31 октября 2014 г. 5:45
    28 октября 2014 г. 12:22
    Модератор
  • как ваши успехи?
    29 октября 2014 г. 7:47
    Модератор