はじめに
毎日のルーチン作業って、本当に面倒ですよね。特に動画制作をしている方なら、「毎日同じフォルダ構成を作って、ファイルをコピーして、名前を変更して…」という作業の繰り返しにうんざりしているのではないでしょうか。
今回は、バッチファイル一つで毎日の動画制作準備を完全自動化した実例をご紹介します。これにより、手作業で5分かかっていた作業が、ワンクリック5秒で完了するようになりました。
解決したい課題
困っていたこと
- 毎日、複数のニュース動画(AIニュース、暮らしとお金、世界マネー)を投稿
- 日付ごとにフォルダを作成し、テンプレートファイルをコピー
- ファイル名を手動で日付に変更する作業が毎日発生
- 3つのカテゴリ × 毎日 = かなりの時間ロス


理想の状態
- バッチファイル1つ実行するだけで、3つのカテゴリすべてが自動処理される
- 今日の日付でフォルダが自動作成される
- ファイル名も自動で日付に変更される
- 既存フォルダがある場合は上書きせずスキップ
📚もっと色々と読みたい方へ!
気になった方はぜひ、マガジンやブログカテゴリーからもチェックしてみてください!
▶他のテックハックも気になる方は、こちらからどうぞ👇
テックハック-カテゴリー
▶ このシリーズのnoteマガジンはこちら👇
チャチャのテックハック|技術と発見の記録
技術的な解決アプローチ
使用技術
- Windowsバッチファイル(.bat)
- コマンドプロンプトの基本コマンド
実装のポイント
1. 日付の自動取得
for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') do set datetime=%%I
set today=!datetime:~0,8!
システム日付をyyyyMMdd形式で取得し、フォルダ名・ファイル名に使用。
2. 複数カテゴリの効率的処理
call :copy_and_rename "%src1%" "%dst1%" "%today%" "%pattern1%" "AIニュースまとめ"
call :copy_and_rename "%src2%" "%dst2%" "%today%" "%pattern2%" "暮らしとお金のニュースまとめ"
call :copy_and_rename "%src3%" "%dst3%" "%today%" "%pattern3%" "世界のマネーニュースまとめ"
関数的な処理をバッチファイルで実現し、同じ処理を3回呼び出すことで効率化。
3. 重複チェック機能
REM %1=src, %2=dst, %3=date, %4=pattern, %5=タイトル
if exist "%~2" (
echo [%~5]:%~2 は既に存在します。スキップします。
exit /b
)
既存フォルダの上書きを防ぎ、安全性を確保。
実際のコード
※以下のパスは例です。あなたが管理したい任意のパスに置き換えてください。
@echo off
REM ==== 日付をyyyyMMdd形式で取得 ====
setlocal enabledelayedexpansion
for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') do set datetime=%%I
set today=!datetime:~0,8!
REM ==== AIニュースまとめ ====
set "src1=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\02.AIニュースまとめ\フォーマット"
set "dst1=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\02.AIニュースまとめ%today%"
set "pattern1=*XXXXXXXX_AIニュース.ymmp *XXXXXXXX_AIニュース_台本.csv"
REM ==== 暮らしとお金のニュースまとめ ====
set "src2=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\03.暮らしとお金のニュースまとめ\フォーマット"
set "dst2=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\03.暮らしとお金のニュースまとめ%today%"
set "pattern2=*XXXXXXXX_暮しとお金.ymmp *XXXXXXXX_暮しとお金_台本.csv"
REM ==== 世界のマネーニュースまとめ ====
set "src3=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\04.世界のマネーニュースまとめ\フォーマット"
set "dst3=P:\チャチャの動画を管理しているパス\02.動画投稿\04.投稿動画\04.世界のマネーニュースまとめ%today%"
set "pattern3=*XXXXXXXX_世界のマネー.ymmp *XXXXXXXX_世界のマネー_台本.csv"
REM ==== 各ニュースまとめを処理 ====
call :copy_and_rename "%src1%" "%dst1%" "%today%" "%pattern1%" "AIニュースまとめ"
call :copy_and_rename "%src2%" "%dst2%" "%today%" "%pattern2%" "暮らしとお金のニュースまとめ"
call :copy_and_rename "%src3%" "%dst3%" "%today%" "%pattern3%" "世界のマネーニュースまとめ"
pause
exit /b
:copy_and_rename
REM %1=src, %2=dst, %3=date, %4=pattern, %5=タイトル
if exist "%~2" (
echo [%~5]:%~2 は既に存在します。スキップします。
exit /b
)
xcopy "%~1" "%~2" /E /I /Y
cd /d "%~2"
for %%F in (%~4) do (
set "old=%%F"
set "new=!old:XXXXXXXX=%~3!"
ren "%%F" "!new!"
)
cd /d "%~dp0"
echo [%~5]:%~2 を作成しました。
exit /b
使用時の注意点
- 上記コードの「P:\チャチャの動画を管理しているパス」部分を、あなたの実際のフォルダパスに置き換えてください
- ファイル名のパターン(例:`*XXXXXXXX_AIニュース.ymmp`)も、あなたの環境に合わせて調整してください
- Shift-JIS(ANSI)で保存することを忘れずに
上記のソースを最初はテキストファイルに張り付けて保存してくださいね。
そうすうると、「ファイル名.txt」てなると思います。
そのあと、このファイル名を「ファイル名.bat」って拡張子の部分を直接変えてください。多分、警告ダイアログ出ると思いますが、OKしてもらって大丈夫です。
その出来たバッチファイルを、ダブルクリックすれば実行されますよ^ ^
つまずいたポイントと解決策
1. 文字化け問題
問題: UTF-8で保存したバッチファイルで日本語パスが文字化け。
解決: Shift-JIS(ANSI)で保存することで解決。Windowsのコマンドプロンプトは標準でShift-JISを使用するため。
チャチャは普段の仕事でもこの文字化け問題しょっちゅう遭遇してます。
2. 各カテゴリのファイル名パターンの違い
問題: 各ニュースカテゴリごとにファイル名の命名規則が異なっていた。
- AIニュース: `XXXXXXXX_AIニュース.ymmp`
- 暮らしとお金: `XXXXXXXX_暮しとお金.ymmp`
- 世界のマネー: `XXXXXXXX_世界のマネー.ymmp`
一律の処理では、
この「`_AIニュース`」「`_暮しとお金`」「`_世界のマネー`」という
中間部分の違いに対応できませんでした。
解決: カテゴリごとに`pattern`変数を定義し、関数に渡すことで柔軟に対応。
set "pattern1=*XXXXXXXX_AIニュース.ymmp *XXXXXXXX_AIニュース_台本.csv"
set "pattern2=*XXXXXXXX_暮しとお金.ymmp *XXXXXXXX_暮しとお金_台本.csv"
set "pattern3=*XXXXXXXX_世界のマネー.ymmp *XXXXXXXX_世界のマネー_台本.csv"
バッチファイルの中身を詳しく解説
プログラマーでも意外と知らないバッチファイルの仕組みについて、重要な部分を解説します。
👇これ以降は、興味がる人のみ推奨です^ ^
REMコマンド(コメント)
REM ==== 日付をyyyyMMdd形式で取得 ====
REM %1=src, %2=dst, %3=date, %4=pattern, %5=タイトル
解説:
- `REM`は「remark(リマーク)」の略で、コメント(注釈)を書くためのコマンド
- `REM`で始まる行は実行時に完全に無視されるため、プログラムに影響しない
- バッチファイルの説明や、各処理の目的を記録するために使用
- 他のプログラミング言語の`//`や`#`と同じ役割
- 大文字・小文字は区別されない(`REM`でも`rem`でもOK)
なぜREMが重要なのか:
- 後から見返したときに、何をしているかが分かる
- 他の人がコードを読むときの理解を助ける
- 複雑な処理を一時的に無効化(デバッグ時に便利)
日付取得の仕組み
for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') do set datetime=%%I
set today=!datetime:~0,8!
解説:
- `wmic os get localdatetime /value`でシステム日時を取得(例:`20250703143025.123456+540`)
- `for /f`で文字列を分割し、`=`で区切った2番目の部分を取得
- `!datetime:~0,8!`で文字列の0文字目から8文字を切り出し(yyyyMMdd形式)
変数の遅延展開解説:
- `wmic os get localdatetime /value`でシステム日時を取得(例:`20250703143025.123456+540`)
- `for /f`で文字列を分割し、`=`で区切った2番目の部分を取得
- `!datetime:~0,8!`で文字列の0文字目から8文字を切り出し(yyyyMMdd形式)
変数の遅延展開
setlocal enabledelayedexpansion
set "new=!old:XXXXXXXX=%today%!"
解説:
- バッチファイルでは通常、変数は行の解析時に展開される
- `enabledelayedexpansion`により、`!変数名!`で実行時展開が可能
- `!old:XXXXXXXX=%today%!`は文字列置換(`XXXXXXXX`を`%today%`に置換)
関数的な処理の実現
call :copy_and_rename "%src1%" "%dst1%" "%today%" "%pattern1%" "AIニュースまとめ"
:copy_and_rename
REM %1=src, %2=dst, %3=date, %4=pattern, %5=タイトル
解説:
- `call :ラベル名`で関数のような処理を実現
- `%1`, `%2`…で引数を受け取る
- `%~1`, `%~2`でクォートを除去した引数を取得
条件分岐とエラーハンドリング
if exist "%~2" (
echo [%~5]:%~2 は既に存在します。スキップします。
exit /b
)
解説:
- `if exist`でファイル・フォルダの存在チェック
- `exit /b`で関数から戻る(バッチ全体は終了しない)
- `%~5`で5番目の引数(タイトル)を表示
ファイル操作コマンド
xcopy "%~1" "%~2" /E /I /Y
for %%F in (%~4) do (
set "old=%%F"
set "new=!old:XXXXXXXX=%~3!"
ren "%%F" "!new!"
)
解説:
- `xcopy`でフォルダを再帰的にコピー(`/E`=空フォルダも含む、`/I`=宛先がフォルダ、`/Y`=確認なし)
- `for %%F in (パターン)`でワイルドカードにマッチするファイルを処理
- `ren`でファイル名を変更
なぜバッチファイルを選んだのか
メリット:
- Windowsに標準搭載されているため、追加ソフト不要
- 学習コストが低い(基本的なコマンドの組み合わせ)
- テキストファイルなので編集・管理が簡単
- 実行が軽い(システムリソースをほとんど使わない)
デメリット:
- 複雑な処理には向かない
- エラーハンドリングが限定的
- Windows専用(クロスプラットフォーム対応不可)
この程度の定型処理であれば、PowerShellやPythonよりもバッチファイルの方がシンプルで保守しやすいというのが選択理由です。
効果・メリット
時間短縮効果
- 従来: 手作業で約5分/日
- 自動化後: バッチ実行で約5秒/日
- 年間節約時間: 約30時間
品質向上
- ヒューマンエラーの削減(ファイル名の入力ミス等)
- 作業の標準化
- 集中力を本来の作業(動画制作)に集中
拡張性
- 新しいカテゴリの追加が容易
- ファイル名パターンの変更も簡単
- 他の定型作業にも応用可能
応用アイデア
1. タスクスケジューラとの連携
REM 毎朝8時に自動実行
schtasks /create /tn "DailyVideoPrep" /tr "C:\scripts\news_auto_copy.bat" /sc daily /st 08:00
2. ログ機能の追加
echo %date% %time% - フォルダ作成完了 >> C:\logs\video_prep.log
3. 他のクリエイター向けカスタマイズ
- ブログ記事のテンプレート作成
- プレゼン資料の定型フォルダ作成
- プロジェクト管理用フォルダ構成の自動生成
まとめ
バッチファイル一つで、毎日の面倒な作業を完全自動化できました。特に重要なのは:
- 小さな改善の積み重ねが大きな効果を生む
- **既存のツール(バッチファイル)**でも十分強力
- エラーハンドリング(重複チェック等)で安全性を確保
- 拡張性を考慮した設計で将来の変更に対応
プログラミング初心者でも、身近な課題から始めて少しずつ改善していけば、必ず作業効率は向上します。
ぶっちゃけ、プログラマーの私も動いてるからヨシってとこは多々ありますよ。笑

でも、まずは、手を動かすのが私の方針です。理解はあとからついてきますから^ ^
AIに依頼して、大体こういうことね、ここを変えれば私の目的通りできるなーぐらいの理解です。
皆さんも、日々の「面倒だな」と感じる作業があれば、ぜひ自動化にチャレンジしてみてください!
実際、プログラマーのいかにサボるか、楽をするか、は大事な原動力っす。
この記事が役に立ったら、ぜひスキやフォローをお願いします!他にも作業効率化のテクニックを発信していきます。
コメント