バッチファイル作成のための参考になりそうなリンク集など

# はじめに
このページにあるリンクは比較的初心者向けのページです
慣れている方が見てもあまり意味は無いでしょう
自分のための備忘録としての側面が大きいです
いいサイトやページがあったら追加していくので教えてください

# リンク集
## 文法などの基本的解説
### 知識ゼロからのwindowsバッチファイル超入門
https://jj-blues.com/cms/
右も左もわからない人はここのサイトの講義の部分を1周するころにはおおよそわかるようになると思います

### .bat初心者・未経験者に贈るコマンド集
https://qiita.com/sawa_tsuka/items/4432263ef34418175fa9
変数設定までを解説
### Windowsコマンドプロンプト基礎文法最速マスター
http://windows.g.hatena.ne.jp/cx20/20100203/p1
基本的な文法について解説
### 開発に役立つ，BATファイルの書き方・パターン集　（コマンドプロンプトの定石を体系的に学び，バッチ中級者になろう）
https://language-and-engineering.hatenablog.jp/entry/20130502/PatternsOfMSDOSorBAT
基本的な解説

### バッチファイル基礎文法リファレンス
http://kshibamo.web.fc2.com/
基本的な解説

### 炎のコマンドプロンプト入門
https://archive.fo/o/isM2F/www.geocities.co.jp/SiliconValley-SanJose/1227/index.html
見つけられた残っていた魚拓
環境変数についてのページです
https://archive.fo/isM2F
このサイトはわかりやすかったのですがサービス終了に伴い見れなくなってしまいました

もしデータをお持ちの方がいらっしゃるなら公開するか連絡していただけると幸いです
### Windowsバッチまとめ
https://qiita.com/tomotagwork/items/5b9e08f28d5925d96b5f
バッチの文法などについて解説

### バッチファイル基礎文法リファレンス
https://qiita.com/kshibamo/items/9368b0b2a4a2f40b61f1
パイプなど含めてよくまとまっていいる
### 汝、コマンドプロンプトを愛せよ
https://qiita.com/mima_ita/items/90f709cad32ca4e7413d
比較的実用的な感じでサンプルとあわせつつ解説している

### バッチファイルでよく使う書き方まとめ
https://qiita.com/sta/items/8cab80fe74b8dcfa5336
テンプレセット

## Tips
### バッチファイルでの試行錯誤を回避するためのメモ
https://qiita.com/yz2cm/items/8058d503a1b84688af09
よくわからないバグが発生したらこの辺を疑うと原因が見つかるときがある

### バッチファイル界の魔境『遅延環境変数』に挑む（おまけもあるよ）
https://qiita.com/sawa_tsuka/items/c7c477cacf8c97792e17
forやifなどで起こるバッチ特有の注意点など
### バッチファイル(*.bat) を管理者として実行するための バッチファイル
https://qiita.com/jTakasuRyuji/items/e7bd576ed57969b2d06e
### Windowsバッチまとめ 補足: バッチで出来ないことを他の仕組みで補う
https://qiita.com/tomotagwork/items/5a0e418ceca9b816df5
### バッチからPowershellのfunction呼び出し
https://qiita.com/M11/items/677ed74b32cbe533461a
### バッチファイルの中にPowerShellスクリプトを埋め込む
https://qiita.com/earthdiver1/items/cab769aad623a03a0f2d

### バッチファイルでよく使う書き方まとめ
https://qiita.com/sta/items/8cab80fe74b8dcfa5336
いろいろたくさん
### Windowsバッチファイルの小技
https://qiita.com/bvtjpn/items/f03f126b18c525c0bf7e
リダイレクション、イベントログ、空ファイル作成、日付取得、待ち処理
### DOSバッチファイルを書くときに気をつけていること
https://qiita.com/yz2cm/items/d2c86a09d6b1861d684d
注意点など
### 汝、コマンドプロンプトを愛せよ
https://qiita.com/mima_ita/items/90f709cad32ca4e7413d
文法とサンプルが事細かに解説されている
### Windowsコマンド集（機能別一覧）
https://tech.nikkeibp.co.jp/it/article/COLUMN/20060221/230144/
### DOS コマンド一覧
https://www.pg-fl.jp/program/dos/doscmd/#cmdlist_header_R
### 【windows】windowsコマンド一覧
http://www.openreference.org/articles/view/611
### Windowsコマンドメモ
https://qiita.com/mamemomonga/items/f74bea521089f1615950
### バッチの引数にファイルパスを渡すと壊れるのな
https://qiita.com/kumazo/items/227d858918edcb848f80
タイトルの通りでそれの回避テンプレが掲載されている
## 確認用ダイアログの作成
確認用ダイアログなどGUIを用いたフォームはバッチ単体では厳しいのでPowerShellやvbsなどを用いるといいかもしれません
PowerShellを用いたサンプルをメモとして置いておきます
サンプルの流れはバッチでpowershellを呼び出し→powershellから確認用ダイアログを表示→ダイアログから指定のバッチを呼び出し
になっています

#### PowerShell呼び出し用バッチ

```bat:PowerShell呼び出し用バッチ
@echo off
REM 呼び出し用のバッチです
powershell -NoProfile -ExecutionPolicy Unresticted .\呼び出すパワーシェルのファイル.ps1
exit
```

#### 確認用ダイアログのためのPowerShellスクリプト

```powershell:確認用ダイアログのためのPowerShellスクリプト
#確認用ダイアログのPowerShellスクリプトのひな形
Set-StrictMode -version Latest

# .NET Frameworkのダイアログ関連オブジェクトの取り込み
Add-Type -AssemblyName System.Windows.Forms;

# ダイアログに表示する説明
$text = "確認のメッセージ本文";

# ダイアログのタイトル
$caption = "確認ダイアログのタイトル";

# ボタンの形状
$buttonsType = "YesNo";

# アイコンの種類
$iconType = "Question";

$result = [System.Windows.Forms.MessageBox]::Show($text, $caption, $buttonsType, $iconType);
if ($result -eq 'Yes') {
    # ここにyesを押したときの処理を書いていく
    #cmd.exeを呼び出し
    cmd /c ".\yesの時に呼び出すバッチ.bat"
    $result = "Yesを押しました"
}
else {
    # ここにnoを押したときの処理を書いていく
    cmd /c ".\Noの時に呼び出すバッチ.bat"
    $result = "noを押しました"
}
```


参考
https://grum.hatenablog.com/entry/2015/10/08/013254
http://snjx.info/diary/snjx/049
https://kapibara-sos.net/archives/773



### 作成する際にVSCodeを使う時のメモ
バッチは文字コードがShift JISであるためVSCodeで開くとUTF-8で開き文字化けしてしまいます
いちいち手で文字コードを書き換えるのが面倒なので自動で文字コードを判定するように設定を行います
setting.jsonを開き以下を追加します

```json
"files.autoGuessEncoding": true
```

参考
https://qiita.com/github129/items/edf1a2c0472fbe293f9c
https://qiita.com/ustakr/items/acad8dc12c166c2ad5e9

# おわりに
深い理由がない限り無理にバッチで完結することにこだわっても時間と労力の無駄なのでさっさと適切な言語を使って楽に書いてきましょう