DOSのバッチ処理
敬遠されがちなDOSのバッチ(.bat)処理。実はいろいろ使えるんです。
@echo off setlocal rem メインルーチン :main call :func "hoge" goto :eof rem 関数 :func echo %1 goto :eof
関数呼び出し。
for /F %%s in ('dir *.txt /b') do ren %%~fs %%~ns.xml
.txtを.xmlに変換。
%1 | 1番目の引数 |
%~1 | 1番目の引数の"〜"のダブルクウォーテーションを省く |
%~d1 | ドライブ名 |
%~p1 | パス文字列 |
%~n1 | ファイル名 |
%~x1 | 拡張子 |
ここらは一般的。他にも、
%~a1 | 属性文字列 |
%~t1 | 日付・時刻 |
%~z1 | サイズ |
%~$PATH:1 | PATH環境に指定されているディレクトリを検索し、最初に見つかった完全修飾名に%1を展開 |
とか、
@echo off set HOGE=hoge hogera hogega echo %HOGE% echo %HOGE:ho=su% echo %HOGE:ho=% echo %HOGE:~0,4% echo %HOGE:~5,6% echo %HOGE:~-6%
環境変数文字列いじり。上から置換、削除、抽出
あと地味なとこで、
echo]
改行
echo ^>
'>'を出す
if exist hoge.txt ( echo ファイルある ) else ( echo ファイルない ) rem 逆 if not exist hoge.txt ( echo ファイルない ) else ( echo ファイルある )
ファイルの存在チェックとか
if defined hoge ( echo 環境変数hogeが定義されている = %hoge% )
環境変数が定義されているかどうか
スーパーpre記法にバッチもあるのがなんかいいね。