Batch can be surprisingly powerful but I don't think the kind of date manipulation you want will be practical.
You can use FOR to split the date into elements and then use SET /A to do the subtraction, but then you're going to need a huge number of IF and GOTO statements to handle cases like subtracting an hour from half past midnight on the 1st of January.
I think you'd be better off investigating VBS or Powershell.