eightban's memo

残しておきたい記事をまとめてみました。このブログに書いてあるドキュメントやブログで配布しているファイルの使用によって発生するいかなる損害に対してもこのブログの管理者は責任を負いません。使用する場合は自己責任のもとに使用してください。

bat windows

フォルダーの中にあるファイルを分割するWindowsのバッチファイル

更新日:

指定された数ごとに分割する

@echo off
setlocal enabledelayedexpansion

REM フォルダのパスと分割数を設定
set sourceDir="D:\data2\00in"
set splitCount=70
REM 分割フォルダのベースパスを設定
set splitDirBase="D:\data2\00out"
set folderCount=0
set fileCount=0


REM ソースディレクトリ内のファイルを名前順に処理
for /f "delims=;" %%F in ('dir /b /on "%sourceDir%\*.*"') do (
    set /a "folderCount=!fileCount! / !splitCount!"
    
    REM 新しいフォルダを作成
    if not exist "!splitDirBase!\!folderCount!" (
        mkdir "!splitDirBase!\!folderCount!"
    )

    REM ファイルを新しいフォルダに移動
    move "%sourceDir%\%%F" "!splitDirBase!\!folderCount!\"
    set /a "fileCount+=1"
)

endlocal

ファイル名の最後の文字で振り分ける

変更すれば最初の文字や文字数も指定できます

@echo off
setlocal enabledelayedexpansion

REM ファイルが存在するディレクトリのパスを設定
set sourceDir="D:\data2\a\aa\b\test"

REM 移動先の親ディレクトリを設定
set destinationDir="D:\data2\a\aa\img2img"

REM ソースディレクトリ内のファイルを処理
for %%F in ("%sourceDir%\*.*") do (
    REM ファイル名の最後の文字を取得
    set "fileName=%%~nF"
    set "lastChar=!fileName:~-1,1!"
    REM ファイル名のの文字を取得
    rem    set "lastChar=!fileName:~0,1!"

    REM 移動先フォルダのパスを生成
    set "destinationFolder=%destinationDir%\!lastChar!"

    REM 移動先フォルダが存在しない場合、作成
    if not exist "!destinationFolder!" (
        mkdir "!destinationFolder!"
    )

    REM ファイルを移動
    move "%%F" "!destinationFolder!"
)

endlocal

-bat, windows

Copyright© eightban's memo , 2024 All Rights Reserved Powered by STINGER.