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

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

[DateTime]::Today.AddDays(-1).ToString('yyyyMMdd')

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

powershell [DateTime]::Today.AddDays(-1).ToString('yyyyMMdd')

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

実行結果を変数に入れるにはFORコマンドを使用しなければいけない。 ※こんなことはできない。

SET yesterday=powershell [DateTime]::Today.AddDays(-1).ToString('yyyyMMdd')

FORコマンドのコマンド実行部(`で囲まれたところ)では、()等はダブルクォーテーションで囲うか^`でエスケープが必要となるため、書き方は2通り。

FOR /F "usebackq" %a IN (`powershell [DateTime]::Today.AddDays"("-1")".ToString"("'yyyyMMdd'")"`) DO SET yesterday=%a

あるいは

FOR /F "usebackq" %a IN (`powershell [DateTime]::Today.AddDays^(-1^).ToString^('yyyyMMdd'^)`) DO SET yesterday=%a

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

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

FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddDays"("-1")".ToString"("'yyyyMMdd'")"`) DO SET yesterday=%%a

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