Upgrade to Pro — share decks privately, control downloads, hide ads and more …

キレない変数の扱い方 /How to handle variables no anger

キレない変数の扱い方 /How to handle variables no anger

2bf280ac8fc28aa5d99de291eb8ccfbe?s=128

Endo_Hizumi

August 23, 2019
Tweet

Transcript

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

  2. どうも、こんばんわ

  3. 遠藤ヒズミです

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

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

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

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

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

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

    ラベル・call・exit /b で、関数っぽいものを作ることができる(↓)
  10. バッチファイルの変数は癖がありすぎる • 四則演算の時は、SETコマンドに/aオプションをつける ← なるほど • 代入のイコール前後は、スペースを入れてはいけない ← なるほど? •

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

    FORやIFの制御構文内で使うには、!で囲む必要がある ← は? • FORの一時変数はCMD直とバッチでは書き方が違う←直の時は%は1つ • コマンドの実行結果を変数に入れるには、FOR文を使う ← めんどい よく忘れてハマって、壊れてるんじゃないのこれー!?とキレそうになる。
  12. 代入のイコール前後にスペースを入れてはいけない こう書くじゃん?

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

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

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

  16. こうすればいい

  17. こうすればいい や っ た ぜ 

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

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

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

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

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

  23. こうすればいい や っ た ぜ 

  24. こうすればいい や っ た ぜ 

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

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

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