バッチとPowerShellで昨日の日付を取得する

Windowsバッチで昨日の日付を簡単に取得できる方法はない。
PowerShellを使えば簡単に求められるので、スクリプトの全体をバッチで書いていた場合、PowerShellで呼び出してあげる必要がある。

まず、PowerShellで昨日の日付を求めるのはワンライナーで書ける。

これをコマンドラインから実行するには

※コマンドラインから実行する場合は、yyyyMMddを囲うのはシングルクォーテーションのみ可能。
 ダブルクォーテーションを使用していた場合は\でエスケープが必要。

実行結果を変数に入れるにはFORコマンドを使用しなければいけない。
※こんなことはできない。
SET yesterday=powershell [DateTime]::Today.AddDays(-1).ToString('yyyyMMdd')
FORコマンドのコマンド実行部(で囲まれたところ)では、()等はダブルクォーテーションで囲うか^でエスケープが必要となるため、書き方は2通り。

あるいは

FORコマンドの参考:http://www.atmarkit.co.jp/ait/articles/0106/23/news004_2.html

さらにこれをバッチファイルで実行するには%aが展開されてaになるので、%を2つつける必要がある。

echo %yesterday%を実行すると以下のように表示される。
20160123

-Windows