読者です 読者をやめる 読者になる 読者になる

バッチファイル・テンプレート集

バッチファイル

組み合わせて使えるバッチファイルのテンプレートを作成しました.
変数だけ好きなように編集してください.

ループ

『ループ回数』を変数として使って何か処理をしたい場合.
例えば,奇数番号を含む文字列を生成したい場合など.

REM *****************************************
REM * Template of loop
REM * Repeat until LoopNum
REM *****************************************
@echo off
set Counter=0
set LoopNum=
:loop1
  set /a Counter=%Counter%+1
  REM Write process below
      
if not %Counter% == %LoopNum% goto loop1

変数
  • Counter: ループ回数をカウント
  • LoopNum: ループする回数

年月日時間(YYYYMMDDHHMMSS)の名前フォルダを作成する

Desktopに作成

REM **************************************************************************
REM * Make a directory named YYYYMMDDMMSS on Desktop
REM **************************************************************************
@echo off
   set YYYYMMDD=%DATE:~-10%
   set YYYYMMDD=%YYYYMMDD:/=%
   set HHMMSS=%time:~0,8%
   set HHMMSS=%HHMMSS: =0%
   set HHMMSS=%HHMMSS::=%
   set DIR_NAME=%HOMEDRIVE%%HOMEPATH%\Desktop\%YYYYMMDD%%HHMMSS%
   mkdir %DIR_NAME%

特定フォルダ以下の「全階層」にある全てのファイルを取り出す

上の例と組み合わせれば,年月日時間(YYYYMMDDHHMMSS)の名前フォルダにコピーできる.

REM *****************************************
REM * Recursively copy all pdf files 
REM * to the target directory 
REM *****************************************
@echo off
DIR_NAME=
for /R %%f in (*.pdf) do copy %%f %DIR_NAME%\

変数
  • DIR_NAME: コピー先フォルダのpath

ファイル名のリネーム

応用例.

  1. 作業フォルダを,デスクトップに作った年月日時刻のフォルダにコピー
  2. コピーしたフォルダにあるファイルをリネーム
    • 『「Prefix」+ファイル名+「Suffix」+拡張子』にリネームする
REM *****************************************
REM * Edit file names in the directory
REM * %~nF:File name of %F
REM * %~xF:EXTENSION of %F
REM *****************************************
@echo off
   REM Path of this file: %~dp0
   set WorkingDir=
   set Prefix=
   set Suffix=
REM 1. Make Directory
   set YYYYMMDD=%DATE:~-10%
      set YYYYMMDD=%YYYYMMDD:/=%
   set HHMMSS=%time:~0,8%
      set HHMMSS=%HHMMSS: =0%
      set HHMMSS=%HHMMSS::=%
   set NewDir=%HOMEDRIVE%%HOMEPATH%\Desktop\%YYYYMMDD%%HHMMSS%
   mkdir %NewDir%
REM 2. Copy Directory
   cd %WorkingDir%
   xcopy %WorkingDir% %NewDir%
   cd %NewDir%
REM 3. Rename files
   for %%F in (*.txt) do call :sub "%%F"
   goto :EOF
   :sub
      set BEFORE=%~1
      set FILENAME=%~n1
      set EXTENSION=%~x1
      set AFTER=%Prefix%%FILENAME%%Suffix%%EXTENSION%
      ren "%BEFORE%" "%AFTER%"
   goto :EOF

変数
  • WorkingDir: 対象フォルダ.
    • バッチファイルのある場所にしたい場合,WorkingDir=%~dp0とする.
  • Prefix: ファイル名の先頭に付加する文字列
  • Suffix: ファイル名の末尾に付加する文字列