batファイルおさらい

( ´_ゝ`)ノシ
yoshitiaです。
色々あって2015年の年末に勤めてた会社やめて
2016年の2月から別の会社に入りました。
教訓: 人の縁マジ大事
 
本題。
ちょっとコマンドプロンプトのbatファイル使う機会が出来た時に
「まったくのプログラミング初心者って
いきなりプログラミング言語入るよりコマンドプロンプト
シェルスクリプトから入った方がよくね?」
と思い立ってbatファイル書いてみることにした。
(煎じ過ぎて出がらしだろうなぁ)

 

定番のHelloWorldから。

hello.batファイルを作って書く。
pauseはbatファイル実行終了後画面が即閉じるのを防ぐ。

echo Hello World!
pause

ファイルを保存したらbatファイルをクリック。
コマンドプロンプトが出てきて次の文字が表示される。

echo Hello World!
Hello World!
続行するには何かキーを押してください . . . 

echo Hello World!の部分は不要なのでこう書く。

@echo off
echo Hello World!
pause

行頭に@をつけるとその行は画面に表示されない。
echo offにすると次の行から実行するコマンドが
表示されなくなる。

echo Hello World!
Hello World!
続行するには何かキーを押してください . . . 

それとbatファイルの中に実行コマンドの説明文を入れる時は
remを使う。
echo offの次の行からじゃないと画面に表示されるので注意。

@echo off
rem hello.bat - コマンドプロンプト画面にHello World!を表示する。
echo Hello World!
pause

変数を設定してみる

cd %~dp0
rem set.bat - 変数を設定して利用する
rem 変数を設定します。setで変数を設定すると
rem 長い文字列を何度も入力しなくて良くなります。
rem batファイルが終了するとsetされた変数は削除されます。

set longstring=寿限無寿限無五劫の摺り切れ海砂利水魚の水行末雲来末風来末食う寝る所に住む所藪柑子ブラコウジパイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助

echo %longstring%
echo;
rem echo;で改行してます。

echo 12345%longstring%
rem 変数の前後に文字をくっつけて表示できます。

echo;
echo %longstring%67890
echo;

pause

setを使うとJAVA_HOMEとかをbatファイル実行中の間設定できるので
環境変数がないと実行できないソフトを軽く試すこともできます。

実行前確認メッセージを表示させる

crowd-logic.com
リンク先のコードにあるgoto :yes、goto :noは
:noまたは:yesと書いてある行の次の行からのコマンドを実行するものです。
exitは実行するとbatファイルの実行をそこで終了します。

gotoは簡単に処理を実行したい行に移動できますが
使いすぎるとコードの順番を読むのが難しくなるので
極力使わない方がいいです。
(リンク先のgotoの使い方は良い使い方なので参考になります)

文字列置換 2016/03/12追加

@echo off
cd %~dp0
@rem replace.bat - 変数に格納した文字列の文字を置換

@rem ポイント: =の左右にスペースを入れない事。変数名が「var 」として認識されたり
@rem 格納される文字列が「 C:/home/document」になる
set var=C:/home/document

@rem %var:/=\% の :/=\が置換処理を指定している部分。
@rem :が処理指定開始の文字で=の左側で置換したい文字、
@rem 右側でどの文字に置換するか指定している
set replace_var=%var:/=\%

@rem C:\home\documentが出力される
echo %replace_var%

@rem "C:\home\document"が出力される
echo "%replace_var%"

pause

置換の結果を変数に格納する処理を何回か重ねれば
大抵の置換処理はなんとかなると思う。
割と使いそうなのはファイル名に日時を使う時の整形処理とか。

まとめ

(;;´_ゝ`) あれ?地味に覚える事多くね?
でもWindowsなら新しいソフト使わなくても試せるから便利だと思う(小並感)
ファイッ。

思い出した頃に追加で書き足そうマル