バッチファイルの復習

しばらく触ってないとすぐに忘れてしまう。

Batch ファイルのほかにも WSH (cscript, wscript), PowerShell, IronPython など使えると便利そうなものはあるのだが、果たして勉強するだけの価値があるのやら...


rem batch file test
rem rem, @echo off はよく見かける決まりごと
@echo off
echo -------------------------------------------------------------------------------
echo Batch File Test
echo -------------------------------------------------------------------------------

rem pathext は拡張子を省いて実行できる拡張子のリスト
rem では拡張子とその実行ランタイムの関連付けはどこに?
echo pathext contains possible command line file extensions
echo echo %%pathext%%
echo %pathext%

rem setlocal test
rem setlocal 内での変数設定は endlocal までのスコープで有効
echo setlocal makes local scope
setlocal
echo set localvar=localvarvalue
set localvar=localvarvalue
echo echo %%localvar%%
echo %localvar%
endlocal
echo exited from local
echo echo %%localvar%%
echo %localvar%

rem 変数が空かどうかの判定。
rem if exists ... とか if not ... といった判定も見かける
rem help if で説明は出てくるのだが、正直わかりにくい...
if "%localvar%" == "" goto :localvarNotSet
echo locavar IS SET
goto :localTestDone

:localvarNotSet
echo localvar not set

:localTestDone

rem parameters
echo %%1
echo %1
echo show all param -- %%*
echo %*

rem call test
rem call でバッチファイルを呼ぶとちょうど sh でソースしたような感じ
echo calling batch with call
call subscript
echo lookup up ssvalue
echo %ssvalue%
echo calling batch as command
rem バッチファイルを call なしで呼ぶと返ってこない。exec のような感じ
subscript
echo looking up ssvalue
echo %ssvalue%

echo returned from invocation