日付を取得してサブフォルダにあるURLを開くバッチファイル

#はじめに
曜日ごとにみるチェックするニュースサイトを管理しています.
管理の仕方は,__親フォルダの下にサブフォルダ "0" ~ "6" があって,各サブフォルダの中に.urlがある__という形です.
その日の日付を7で割ったあまりのサブフォルダにあるサイトをチェックする、という作業をある程度自動化するために表題の実装を行った記録が本記事です.

#参考にした記事
[batファイル入門(@sawa_tsukaさんの記事)](https://qiita.com/sawa_tsuka/items/4432263ef34418175fa9)
[batファイルでのfor文について(@sawa_tsukaさんの記事)]
(https://qiita.com/sawa_tsuka/items/67be34bab1fdf3fb87f9)
[日付の取得,演算](https://casualdevelopers.com/tech-tips/how-to-calc-tomorrow-date-with-bat/)
[batファイルでの日付演算時の注意(@giiwa さんの記事)](https://qiita.com/giiwa/items/c4b0ace52b191d58da83)

#日付を取得
手始めに日付を取得して,日にちを7で割るプログラムを作成します.
日付は date とかいう予約変数に入っていて足し算と割り算はできるようです.
但し,二桁の数字(08)とかを十進法の8の認識してもらうためにひと工夫必要だそうです.

```bat:a.bat
@echo off                                                                   
echo %date%                                                                  
set /a day=1%date:~8%-100                                                         
set /a week=day%%7                                                           
echo %day% %week%    
```

(実行結果)

```
>a.bat
2019/12/01
1 1
```

#曜日に応じて動作させる
if文を二つ使って week の値に応じた動作を実装します.
1つのifは week が i (i = 0, ..., 6) がどうかの判定に使います.
もう1つのifは i <= 6 を判定させ、 i+=1 と組み合わせて for文のように使います.

```bat:a.bat
@echo off                                                                    
echo %date%                                                                  
set /a day=1%date:~8%-100                                                         
set /a week=day%%7                                                           
echo %day% %week%                                                            
set i=0                                                                      
:loop                                                                        
if %week%==%i% goto OK                                                       
set /a i+=1                                                                  
if %i% leq 6 goto loop                                                       
exit/B                                                                       
:OK                                                                          
echo %i% %week%        
```

(実行結果)

```
>a.bat
2019/12/01
1 1
1 1
```

#サブフォルダ内のurlを開かせる(完成)
先ほどの OK 節の中を適切に書き換えて完成です.
.url ファイルはただ開くだけでいいようです.

``` bat:a.bat
@echo off                                                                    
echo %date%                                                                  
set /a day=1%date:~8%-100                                                         
set /a week=day%%7                                                           
set i=0                                                                      
:loop                                                                        
if %week%==%i% goto OK                                                       
set /a i+=1                                                                  
if %i% leq 6 goto loop                                                       
exit/B                                                                       
:OK                                                                          
cd %i%                                                                       
for %%i in (*.url) do (                                                      
echo %%i                                                                     
"%%i"                                                                        
)                                                                            
cd ..          
```

(実行結果)

```
>a.bat
2019/12/01
hoge1.url
hoge2.url
```

上記出力に加えてめでたくブラウザでhoge1.url,hoge2.urlのページが開かれます.

#記事修正履歴
19.12.09 / (参考にした記事) @giiwa さんの記事を追加
19.12.09 / (日付を取得) "但し ..." の文を追加
19.12.09 / ((コード全て)) old : set /a day=%date:~8% -> revised : set /a day=1%date:~8%-100