Windows – Move a copy of unknown named images and rename – Powershell or Batch Script

batchcommand linepowershellwindowswindows 10

  1. Copy first ten jpg files in folder in alphanumerical order to new folder with out prior knowledge of jpg file names.
  2. Give each ten files in new location specific names like 'e100.jpg' – 'e110.jpg'.
  3. Powershell or batch script solution to run in windows enviroment.

Current research across related stack exchange posts:

  1. SO – Copy first N files from source directory to “serialized” destination directory using powershell

  2. SF – Copy first 10 files from a folder and subfolders

  3. SO – Powershell to pick random files from a folder and move them to another folder

  4. SU – How to batch copy rename files

  5. SU – How to optionally copy and rename a file in Windows?

  6. SU – PowerShell Script to Rename – Copy – Move

  7. Bulk renaming of files in PowerShell with sequential numeric suffixes

If I were to guess at a solution, based on the research as my coding skill are not very good, I think one of the solutions would look something like this:

Powershell

$excludealreadycopieditems = @()
$sourcefolder = "C:\SYS1"
$destinationFolder = "C:\SYS2"
$maxitems = 10
#Calculate how many folders should be created:
$folderstocreate = [math]::Ceiling((get-childitem $sourcefolder\*.jpg).count / $maxitems)
#Copy the items (if moving in stead of copy use Move-Item)
get-childitem $sourcefolder\*.jpg -Exclude $excludealreadycopieditems | sort-object name | select -First $maxitems | Copy-Item -Destination $destinationFolder$i ;
#Exclude the already copied items:
$excludealreadycopieditems = $excludealreadycopieditems + (get-childitem $destinationFolder$i\*.jpg | select -ExpandProperty name)
     }
ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.100){$:110#} .jpg" -f $i++) -whatif}

CMD

@ECHO OFF
SET SrcCount=0
SET SrcMax=10
FOR %F IN (C:\SYS1\*.jpg) DO IF !SrcCount! LSS %SrcMax% (
      SET /A SrcCount += 1
      ECHO !SrcCount! COPY %F C:\SYS2
      COPY %F C:\temp\output
      )
ren *.jpg e100.* e103.* e104.* e105.* e106.* e107.* e108.* e109.* e110.*

Best Answer

  • How can I copy 10 files to a new directory and rename them with a pattern?

    Use the following batch file (test.cmd):

    @echo off
    setlocal EnableDelayedExpansion
    set "source_dir=f:\test\jpg"
    set "target_dir=f:\test\target"
    for /f "tokens=*" %%f in ('dir /b %source_dir%\*.jpg') do (
      set /a "count+=1"
      set /a "target_count=!count!+100"
      copy "%source_dir%\%%f" "!target_dir!\e!target_count!.jpg" > nul
      if !count! EQU 10 goto :done
      )
    rem finished
    :done
    endlocal
    

    Notes:

    • Change source_dir and target_dir as appropriate

    Example:

    > dir jpg
     Volume in drive F is Expansion
     Volume Serial Number is 3656-BB63
    
     Directory of F:\test\jpg
    
    12/03/2019  11:39    <DIR>          .
    12/03/2019  11:39    <DIR>          ..
    12/03/2019  11:34             4,429 Test_image (01).jpg
    12/03/2019  11:34             4,429 Test_image (02).jpg
    12/03/2019  11:34             4,429 Test_image (03).jpg
    12/03/2019  11:34             4,429 Test_image (04).jpg
    12/03/2019  11:34             4,429 Test_image (05).jpg
    12/03/2019  11:34             4,429 Test_image (06).jpg
    12/03/2019  11:34             4,429 Test_image (07).jpg
    12/03/2019  11:34             4,429 Test_image (08).jpg
    12/03/2019  11:34             4,429 Test_image (09).jpg
    12/03/2019  11:34             4,429 Test_image (10).jpg
    12/03/2019  11:34             4,429 Test_image (11).jpg
    12/03/2019  11:34             4,429 Test_image (12).jpg
    12/03/2019  11:34             4,429 Test_image (13).jpg
    12/03/2019  11:34             4,429 Test_image (14).jpg
    12/03/2019  11:34             4,429 Test_image (15).jpg
    12/03/2019  11:34             4,429 Test_image (16).jpg
                  16 File(s)         70,864 bytes
                   2 Dir(s)  1,005,493,501,952 bytes free
    
    > test
    > dir target
     Volume in drive F is Expansion
     Volume Serial Number is 3656-BB63
    
     Directory of F:\test\target
    
    12/03/2019  12:07    <DIR>          .
    12/03/2019  12:07    <DIR>          ..
    12/03/2019  11:34             4,429 e101.jpg
    12/03/2019  11:34             4,429 e102.jpg
    12/03/2019  11:34             4,429 e103.jpg
    12/03/2019  11:34             4,429 e104.jpg
    12/03/2019  11:34             4,429 e105.jpg
    12/03/2019  11:34             4,429 e106.jpg
    12/03/2019  11:34             4,429 e107.jpg
    12/03/2019  11:34             4,429 e108.jpg
    12/03/2019  11:34             4,429 e109.jpg
    12/03/2019  11:34             4,429 e110.jpg
                  10 File(s)         44,290 bytes
                   2 Dir(s)  1,005,493,379,072 bytes free
    

    Further Reading