1.バッチスクリプトとは何か
- Windowsシステムに標準で搭載されているスクリプト言語で、特別な開発環境を構築せずに実行可能です。
- ファイル操作やログ作成といったタスクを自動化できます。
- ソリューションのコンパイルやWindowsサービスのインストール・アンインストールなど、Windowsが直接実行できるスクリプトを作成できます。
2. Hello Worldの表示
// コマンドプロンプトの表示を非表示にする
@echo off
echo Hello World
pause
3. 実用的なバッチスクリプト例
- .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
-
MSBuildを使ってソリューションをコンパイルする
-
Windowsサービスのデバッグ方法
4. バッチスクリプトの演算操作
- 算術演算
-
- * / % + - (コマンド例:cmdで "set /a 3*5")
-
- 括弧で優先順位を変更 (変数に結果を格納後、%変数名%で出力)
- リダイレクト演算
-
- > 記号を使うと既存の内容を上書きします
-
- >> 記号を使うと既存の内容に追加します
@echo off
set /a result=15*3
echo %result% > output.txt
set /a calc_result = 25+15
echo %calc_result% >> output.txt
- 複数コマンドの実行
-
- && 記号:前のコマンドが成功した場合のみ後続のコマンドを実行
-
- || 記号:最初のコマンドが失敗した場合に2番目のコマンドを実行
- パイプ記号 A|B
最初のコマンドの結果を2番目のコマンドの入力として渡す
-
- 例えば、aフォルダにbとcフォルダ、1.txtと2.txtファイルがある場合、txt拡張子のファイルを検索してtmp.txtに出力
@echo off
dir | find ".txt" > temp.txt
pause
-
- 現在のホストと他のアドレス間のネットワーク接続を検索し、tmp.txtに出力
@echo off
netstat -an | find "ESTABLISHED" > temp.txt
pause
- バッチファイルへのパラメータ渡し
%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. 基本的なコマンド
-
gotoフロー制御のジャンプ
@echo off
echo gotoコマンドの使用例
goto skip
set message="こんにちは、世界!"
echo %message%
@rem ジャンプ先のラベル
:skip
echo ジャンプ後の実行文
pause
-
start新しいコマンドウィンドウを開き、そこで指定されたコマンドを実行
-
- start ["Title"] コマンドウィンドウのタイトルを設定
-
- start /max & /min コマンドウィンドウの最大化・最小化
-
- start /wait 新しいウィンドウの実行完了を待機
start /max
@echo off
echo startコマンドの使用例
@rem 新しいプログラムウィンドウを開き、タイトルを「新規ウィンドウ」に設定、実行完了を待機してから「新規ウィンドウ」と出力
start '新規ウィンドウ' /wait echo 新規ウィンドウ
echo
pause
-
if論理制御コマンド
-
- if exist & if not exist ファイルの存在チェック
-
- if 文字列==文字列 () else ()
-
- if 数値==数値 () else ()
-
- if /i A==a (echo 123) else echo 234 大文字小文字を区別しない
@echo off
echo ifコマンドの使用例
@rem
if exist data.txt (echo ファイルが見つかりました) else (ファイルが見つかりません)
pause