Windows
bat
コマンドプロンプト
バッチファイル
ファイル名

Windows ファイル名に同じ文字列を含んだファイル数によって処理を変える

どうでもいい背景

AKB48 53rdシングル 世界選抜総選挙 × SHOWROOM が開催されて
トップアイドルのAKB48グループの子たちが50カウントや1時間ごとのリセットを駆使して
泥臭い戦いを繰り広げている昨今、みなさんいかがお過ごしでしょうか。

ショールーム録画っち という神ソフトのおかげで
ひたすらにflvファイルが蓄積していく日々、その処理にお困りじゃありませんか?
手動でポチポチ整理するのに疲れたので、その処理を少し楽にするバッチを作りました。
akbグループ映像倉庫に登録すればいいじゃんという話もあるけど、
AKB48G以外のアイドルの配信も見たいですしおすし

やりたいこと

下記、現在やっている整理作業フローのうち1.2.の判断を自動化する

  1. 録画フォルダに出力されたファイルを、ファイル名でソートする hozondata.PNG

2.【配信ID】【配信日時】順に並ぶので、同じ配信ID・配信日のデータ数を確認する
  a. 同じ配信日のデータが1つの場合
    処理済みとして完了フォルダに保管する。
  
  b. 同じ配信日のデータが2つ以上の場合
     ※途中で配信が切れたりするとデータが別れる
    Andys-FLV-Joinerで目視しながらポチポチ結合する
     ※解像度が混ざっている場合、結合するとおかしくなるので目視して適宜判断する

結果

check.bat
@echo off
cd /d %~dp0

rem チェック後に格納するディレクトリを指定
set OK_DIR="J:\Video\SHOWROOM\01"
set NG_DIR="J:\Video\SHOWROOM\02"

rem 作業変数
set TARGET_DIR=%OK_DIR%
set /a CNT=0
setlocal enabledelayedexpansion

rem 処理開始
for %%F in (%*) do (
for /f "DELIMS=日" %%A in ("%%~nF") do set NAME=%%A
rem 【配信ID】【配信日】で区切って抽出開始
set /a CNT=0
for %%G in ("!NAME!*") do set /a CNT=CNT+1

if not !CNT! equ 0 (
rem 1件以上対象ファイルが有る場合、移動処理を実行する
set TARGET_DIR=%OK_DIR%

if !CNT! gtr 1 (
rem 2件以上ある場合NG_DIRに格納
set TARGET_DIR=%NG_DIR%
) 
for %%G in ("!NAME!*") do (
move "%%G" !TARGET_DIR!
)

)

)
pause;

このバッチファイルに整理したいファイルをまとめて選択してドラッグ&ドロップでOK

参考

.bat(バッチファイル)のifコマンド解説。
.bat(バッチファイル)のforコマンド解説。