Windowsバッチスクリプト入門

1.バッチスクリプトとは何か
  1. Windowsシステムに標準で搭載されているスクリプト言語で、特別な開発環境を構築せずに実行可能です。
  2. ファイル操作やログ作成といったタスクを自動化できます。
  3. ソリューションのコンパイルやWindowsサービスのインストール・アンインストールなど、Windowsが直接実行できるスクリプトを作成できます。
2. Hello Worldの表示
// コマンドプロンプトの表示を非表示にする
@echo off 
echo Hello World
pause

3. 実用的なバッチスクリプト例
  1. .NET開発用のWindowsサービスをインストールする
@echo off
color 0f
set AppPath=Source\Applications\RDA\RAD.Module.Synchronizer\RDA.Module.Synchronizer\bin\Debug\STAr.Aquarius.RDA.Module.Synchronizer.exe
set ServiceName= Data Synchronizer Service
set FrameworkPath=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
if exist "%FrameworkPath%" goto frameworkReady 
:ErrorDisp 
echo .NET Framework 4.0がインストールされていません。インストールを中止します..
echo .NET Framework 4.0がインストールされていません。インストールを中止します。 >ServiceInstall.log
goto EndProcess 
:frameworkReady 
cd %FrameworkPath%
echo お使いのシステムには必要な.NET Framework 4.0がインストールされています。サービスをインストールします。 
echo お使いのシステムには必要な.NET Framework 4.0がインストールされています。サービスをインストールします >ServiceInstall.log
echo.
echo. >>ServiceInstall.log

"%AppPath%">temp.txt

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe %~dp0\"%AppPath%" 
net start DataSync
echo -----------------------------
echo         サービスのインストールが完了しました
echo -----------------------------
pause

  1. MSBuildを使ってソリューションをコンパイルする

  2. Windowsサービスのデバッグ方法

4. バッチスクリプトの演算操作
  1. 算術演算
    1. * / % + - (コマンド例:cmdで "set /a 3*5")
    1. 括弧で優先順位を変更 (変数に結果を格納後、%変数名%で出力)
  1. リダイレクト演算
    1. > 記号を使うと既存の内容を上書きします
    1. >> 記号を使うと既存の内容に追加します
@echo off
set /a result=15*3
echo %result% > output.txt
set /a calc_result = 25+15
echo %calc_result% >> output.txt

  1. 複数コマンドの実行
    1. && 記号:前のコマンドが成功した場合のみ後続のコマンドを実行
    1. || 記号:最初のコマンドが失敗した場合に2番目のコマンドを実行
  1. パイプ記号 A|B

最初のコマンドの結果を2番目のコマンドの入力として渡す

    1. 例えば、aフォルダにbとcフォルダ、1.txtと2.txtファイルがある場合、txt拡張子のファイルを検索してtmp.txtに出力
@echo off
dir | find ".txt" > temp.txt
pause

    1. 現在のホストと他のアドレス間のネットワーク接続を検索し、tmp.txtに出力
@echo off
netstat -an | find "ESTABLISHED" > temp.txt
pause

  1. バッチファイルへのパラメータ渡し

%1 は1番目のパラメータ、%2は2番目のパラメータを表し、パラメータはスペースで区切ります。例えばsample.batというバッチファイルがある場合、ディレクトリに移動してから sample.bat パラメータ1 パラメータ2 のように呼び出すと、ユーザーが入力した2つのパラメータ値が出力されます

@echo off
echo 最初の引数: %1
echo 2番目の引数: %2 
pause
@rem このバッチファイルを実行する例: sample.bat 引数1 引数2

5. 基本的なコマンド
    1. goto フロー制御のジャンプ
@echo off
echo gotoコマンドの使用例
goto skip
set message="こんにちは、世界!"
echo %message%
@rem ジャンプ先のラベル
:skip
echo ジャンプ後の実行文
pause

    1. start 新しいコマンドウィンドウを開き、そこで指定されたコマンドを実行
    1. start ["Title"] コマンドウィンドウのタイトルを設定
    1. start /max & /min コマンドウィンドウの最大化・最小化
    1. start /wait 新しいウィンドウの実行完了を待機
start /max
@echo off
echo startコマンドの使用例
@rem 新しいプログラムウィンドウを開き、タイトルを「新規ウィンドウ」に設定、実行完了を待機してから「新規ウィンドウ」と出力
start '新規ウィンドウ' /wait echo 新規ウィンドウ
echo
pause

    1. if 論理制御コマンド
    1. if exist & if not exist ファイルの存在チェック
    1. if 文字列==文字列 () else ()
    1. if 数値==数値 () else ()
    1. if /i A==a (echo 123) else echo 234 大文字小文字を区別しない
@echo off
echo ifコマンドの使用例
@rem 
if exist data.txt (echo ファイルが見つかりました) else (ファイルが見つかりません)
pause

タグ: Windows バッチスクリプト コマンドプロンプト 自動化

5月26日 17:58 投稿