Slide 1

Slide 1 text

キレない変数の扱い方 バッチファイル編

Slide 2

Slide 2 text

どうも、こんばんわ

Slide 3

Slide 3 text

遠藤ヒズミです

Slide 4

Slide 4 text

通りすがりのWebエンジニアしてます

Slide 5

Slide 5 text

個人的に懐かしのネタといえば

Slide 6

Slide 6 text

Windows Meの時に ダイアルアップ接続中に フリーズさせて親に怒られた思い出が。

Slide 7

Slide 7 text

キレないバッチファイル変数の扱い方

Slide 8

Slide 8 text

最初に バッチファイルを書くくらいなら、PowerShell スクリプト書いた方がまだ、人権があると思 うな僕は!!

Slide 9

Slide 9 text

バッチファイルとは ● DOSコマンドを記述したテキストファイル ● WindowsやMS-DOS、OS/2で定型的な作業の自動化に使われる ● プログラムの起動ファイルとして用いられることもある ● IFやFORなどの制御構文があり、やろうと思えばプログラムも作れる ● ラベル・call・exit /b で、関数っぽいものを作ることができる(↓)

Slide 10

Slide 10 text

バッチファイルの変数は癖がありすぎる ● 四則演算の時は、SETコマンドに/aオプションをつける ← なるほど ● 代入のイコール前後は、スペースを入れてはいけない ← なるほど? ● FORやIFの制御構文内で使うには、!で囲む必要がある ← は? ● FORの一時変数はCMD直とバッチでは書き方が違う←直の時は%は1つ ● コマンドの実行結果を変数に入れるには、FOR文を使う ← めんどい よく忘れてハマって、壊れてるんじゃないのこれー!?とキレそうになる。

Slide 11

Slide 11 text

バッチファイルの変数は癖がありすぎる ● 四則演算の時は、SETコマンドに/aオプションをつける ← なるほど ● 代入のイコール前後に、スペースを入れてはいけない ← なるほど? ● FORやIFの制御構文内で使うには、!で囲む必要がある ← は? ● FORの一時変数はCMD直とバッチでは書き方が違う←直の時は%は1つ ● コマンドの実行結果を変数に入れるには、FOR文を使う ← めんどい よく忘れてハマって、壊れてるんじゃないのこれー!?とキレそうになる。

Slide 12

Slide 12 text

代入のイコール前後にスペースを入れてはいけない こう書くじゃん?

Slide 13

Slide 13 text

代入のイコールに、スペースを入れてはいけない 実行するじゃん?

Slide 14

Slide 14 text

代入のイコールに、スペースを入れてはいけない ダメじゃん?

Slide 15

Slide 15 text

なんでじゃん?(□は、半角スペースです) SET□hoge□=□hoge 半角スペースまでが変数名扱いだから ちなみに値も半角スペース入り

Slide 16

Slide 16 text

こうすればいい

Slide 17

Slide 17 text

こうすればいい や っ た ぜ 

Slide 18

Slide 18 text

FORやIFの制御構文内で使うには、!で囲む必要がある こう書いても

Slide 19

Slide 19 text

FORやIFの制御構文内で使うには、!で囲む必要がある 広がるのは、 え い え ん の ゼ ロ 

Slide 20

Slide 20 text

なんでじゃん?(□は、半角スペースです) ● FOR文は、実行時に一行になる ● 実行前に、変数を展開する

Slide 21

Slide 21 text

つまり? ここがこんな風に10回繰り返されているだけ ココ

Slide 22

Slide 22 text

どうすれば? ”@setlocal enabledelayedexpansion”を、追記して %の代わりに!で変数名を囲うと、実行時に変数を展開してくれる

Slide 23

Slide 23 text

こうすればいい や っ た ぜ 

Slide 24

Slide 24 text

こうすればいい や っ た ぜ 

Slide 25

Slide 25 text

やっぱり、めんどくさいな!

Slide 26

Slide 26 text

まとめ ● 変数代入時にスペースは不要 ● FORの中では変数参照は%の代わりに!で囲む

Slide 27

Slide 27 text

まとめ ● 変数代入時にスペースは不要 ● FORの中では変数参照は%の代わりに!で囲む おわり!聴いてくれてありがと!