web-dev-qa-db-ja.com

不明な名前の画像のコピーを移動し、名前を変更します-Powershellまたはバッチスクリプト

  1. フォルダ内の最初の10個のjpgファイルを英数字順にコピーします。jpgファイル名の予備知識はありません。
  2. 新しい場所にある10個のファイルごとに「e100.jpg」-「e110.jpg」のような特定の名前を付けます。
  3. Windows環境で実行するPowerShellまたはバッチスクリプトソリューション。

関連するスタック交換ポスト全体の現在の調査:

  1. SO-PowerShellを使用して、最初のN個のファイルをソースディレクトリから「シリアル化された」宛先ディレクトリにコピーします

  2. SF-フォルダとサブフォルダから最初の10個のファイルをコピーします

  3. SO-Powershellを使用して、フォルダーからランダムなファイルを選択し、それらを別のフォルダーに移動します

  4. SU-名前変更ファイルをバッチコピーする方法

  5. SU-オプションでWindowsでファイルをコピーして名前を変更する方法は?

  6. SU-名前を変更するPowerShellスクリプト-コピー-移動

  7. 連続した数字のサフィックスが付いたPowerShellでのファイルの一括名前変更

私のコーディングスキルがあまり良くないので、調査に基づいて解決策を推測すると、解決策の1つは次のようになると思います。

パワーシェル

$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.*
2
Under A Tree

10個のファイルを新しいディレクトリにコピーしてパターンで名前を変更するにはどうすればよいですか?

次のバッチファイル(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

ノート:

  • 変化する source_dirおよびtarget_dir 適切に

例:

> 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

参考文献

3
DavidPostill

それであなたはかなりの量を研究しました、しかしあなたの結果を評価しなければそれはあまり価値がありません。

NTFSでフォーマットされたドライブでは、ソートのような英数字が暗示されます。

パワーシェル:

Get-ChildItem -Path C:\Sys1 -Filter *.jpg -File |
  Sort-Object Name | Select-Object -First 10 |
    ForEach-Object -Begin {$i=100} -Process {
      Copy-Item -Path $_ -Destination (Join-Path "C:\Sys2" ("e{0:D3}{1}" -f $i++,$_.Extension)) -WhatIf
    }

出力に問題がないように見える場合は、-WhatIfを削除します

1
LotPings