便利」タグアーカイブ

自動化スクリプト、いまさらのバッチ処理、Windows,Bat,配列もどき、For文

Windows10が発売されていて、便利なツールやアプリが存在するのに、自動化スクリプトのためのバッチ処理が必要な時があります。
バッチは単純作業の繰り返しには最適です。それほど便利な機能はありませんがちょっとした作業では便利なものです。

自動化スクリプト、いまさらのバッチ処理、Windows,Bat,配列もどき、For文

自動化スクリプトのためのバッチ処理など、使えるものは使ってみましょう。基本的な内容について説明しますので、もう少し詳細な内容は参考サイトを御覧ください。

基本的にここで説明するのはファイルに保存してバッチファイルとして実行する書式になります。コマンドプロンプトからコマンドを直接入力して実行するとき、変数名の記述(%の数が減る)が代わりますので注意が必要です。

簡単なバッチファイル

(これから)

ループ処理For文

よく使うオプション
/L    –C言語等みたいに(1,1,10) 開始値、増分、終了値と指定できます

/F   —(111 222 333)と指定することで、変数に111,222,333と値を設定できます。また、ファイルに使用したい値、文字列を設定し、(hoge.txt)とすることもできます。
hoge.txtの中身は、
111
222
333
のように記述します。

@echo off
echo ファイルの場所は
echo %~dp0
: コメントです。REMにしてもコメントになります。
: enabledelayedexpansionは遅延環境変数!を使用するためのものです。
setlocal enabledelayedexpansion
REM 文字列をダブルクオーテーションで囲む必要はありません。
set a1=Face1
set a2=Face2
set a4=Face4
set a5=Face5
set ext=.jpg
echo For文のテストです。文字列の連結です。
REM 変数を表示するときにa1の前後に%をつける.
for %%i in (1111 2222) do (
    echo %a1%%%i%ext% 
REM Face11111.jpgとして出力されます。

)

ENDLOCAL
@echo on
pause

参考サイト
http://capm-network.com/?tag=Windows%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%88%B6%E5%BE%A1%E6%A7%8B%E6%96%87

配列(配列もどきらしい)

:SETDelayedExpansionEnable
SETLOCAL enabledelayedexpansion

:SetArrayIndex
SET Array_Index=0

:SetCSVFile
SET CSV_file=Data_list.csv

:SetArray
FOR /F %%I IN (%CSV_file%) DO (
REM 遅延環境変数!を使用しないと値が代わりません。
    SET /a Array_Index=!Array_Index!+1

    SET Array[!Array_Index!]=%%I
)

:EchoArray
FOR /L %%L IN (1,1,%Array_Index%) DO (
ECHO Array[%%L]=!Array[%%L]!

)

IF文

https://pikucha.sakura.ne.jp/blog/2018/10/26/dos-%e3%83%90%e3%83%83%e3%83%81%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%aeif%e3%81%ae%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a0%85%e3%80%81%e3%82%ab%e3%83%83%e3%82%b3%e3%81%ae%e5%89%8d%e3%81%ab%e5%8d%8a/

GOTO文

(これから)

感想

バッチ処理なんて覚える必要ないと思っていました。
しかし、単純作業で人間のミスが多発する場面では、バッチ処理がとても有効です。
例えばpic01111.jpg,pic11111.jpg,pic21111.jpgなどのように同じ数字が並んだファイルの削除やコピー作業を行うと、よほど注意深く確認しないとうっかり見落としていまいます。つまり、ヒューマンエラーが多発するか、うっかりミスを引き起こすのです。このようなミスはどんなに注意をしてもゼロになりません。人間の注意力は長く持続しませんし、ひとによってもエラーが発生する回数は様々です。
そのような処理をバッチ処理で行えば間違が起きませんし、ミスを防ぐことができます。

バッチ処理のプログラムを書く時間と実際の作業時間とを比べる必要もあります。実際の作業が1分もかからないのに、プログラムを書くのに2時間もかけていたのでは、効率が悪いことも事実です。適材適所、必要に応じて使う用途を選別する必要はあります。

C言語やその他の言事異なる変数設定にちょっと面倒くささが目立ちますが、メモを取っておけば、すぐに思い出せると思ってブログに記載しました。