Firstly, I'm assuming that this is a DOS window under Windows as opposed to a full DOS session initiated from a boot disk - there is a very important difference between the two!
Part of the problem is that any call to a script, compiled or otherwise, will initiate a new instance of that script rather than using an already running instance. This means that creating redirecting scripts for "set" and echo" to point to a single master script "newcmd" and passing the parameters will still create a new instance of the script, so any memory variables used by previous (or still running) instances will be inaccessible.
For workarounds, you could use the shell variable structure for storage of a limited amount of data, use a file storage (flat file, INI or XML) or even write the data to the registry for storage. It may also be possible to get a hook in to an existing running script by calling it via it's PID, but this may mean writing some extensions for AutoIt, similar to calling functions and procedures stored in an external .dll (which may not be a bad thing, but it would mean some pretty heavy development work!)
The main method of attack so far is to get DOS to run AutoIt scripts from within its shell and maintain memory continuity between them. Lets put AutoIt outside the DOS box instead! Use the AutoIt script as the shell to execute the commands, and call CMD /c to execute those commands that aren't programmed into the main script! The result is that all the 'set' and 'echo' commands are now interpreted by the main AutoIt script, which remains in memory so all variables are available. Any commands not understood by the script can be passed off to an instance of cmd.exe, which returns control to the main script upon termination.
Hopefully that will spark your imagination