フォルダーの中にあるファイルを分割する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
ディスカッション
コメント一覧
まだ、コメントがありません