djrust, код на форуме оформляется тэгом «code».
Проводить вычисления с датой в пакетных файлах возможно, но сие является весьма нетривиальной задачей. Простого вычитания мало: что будет, если Вы будете вычитать от первого числа месяца? Значит, надо после вычитания корректировать месяц и день. Последний день за предыдущий месяц бывает разными числами, от 28(29 — в високосный год) до 31. А если предыдущий месяц должен получиться декабрь? Надо будет учитывать и это.
Ещё раз повторюсь — в принципе, возможно; реализацию я видел. Но, думаю, проще и понятнее будет, ежели пользовать какую-нибудь внешнюю утилиту, например, ту же «DateX.exe» из комплекта Shell Scripting Toolkit:
@echo off
setlocal
for /f "usebackq" %%i in (
`"%ProgramFiles%\Shell Scripting Toolkit\DateX.exe" -o -1 -f 'dd.mm.yyyy'`
) do set sFormatDate=%%i
if defined sFormatDate if not exist "D:\backup\%sFormatDate%" md "D:\backup\%sFormatDate%"
endlocal
exit /b 0