I realize this is pretty old, but in case anyone is still interested...
I think the "hard" part of this is coming up with the seconds on the modified time. It turns out that forfiles will do this, but because forfiles requires internal commands to be launched in a separate cmd shell it's a bit sticky getting the values back.
This will write the information into a .csv file:
forfiles /m *.txt /c "cmd /c for /r %%i in (@file) do @echo @file, @ftime, @fdate >> txt_files.csv"
Given a .csv file listing all the .txt files along with modified dates and times, the rest should follow pretty easily. The file can be read with a for loop, and the dates and times compared to %date% and %time% to determine if the file should be moved. (That part is more tedious than tricky: if the 3-second cutoff causes the seconds to roll over a minute boundary then both the seconds and minutes will need to be adjusted, and repeat if the adjusted minute boundary rolls over the hour boundary or the adjusted hour boundary over a day boundary or the adjusted day boundary rolls over a month...you get the idea.)
I don't see any way to force @time to use a 24-hour clock, so the AM/PM in the .csv file will need to be handled as well.
Also, %time% will have a leading blank on any hour before 10 AM, so using something like the following will fix that:
set curtime=%time:~0,2%%time:~3,2%%time:~6,2%
set curtime=%curtime: =0%