Hi MariLiza,
For your first question, I think it would be best if you try the following procedure for creating files with exit in them. I tested this on my Windows machine in IDL 8.4.1. Here is the code and example to test that it works:
pro exit_procedure_test
exit
end
Once you save this as a .pro file named 'exit_procedure_test.pro', issue the following commands in the IDLDE (workbench).
.f ;this extends to .full_reset_session when typed in the IDL Console
.compile exit_procedure_test
resolve_all, /CONTINUE_ON_ERROR
save, file ='exit_procedure_test.sav', /routine
.f ;reset the session once more to clear memory
restore, 'exit_procedure_test.sav'
exit_procedure_test ;this will run the restored procedure, notice that there is no compiled module statement
If this does work, then you may want to apply the same process to your other programs to generate the save files in this method.
For your second question, if you are trying to do batch processing with IDL you will need to use IDL from the command prompt, not the IDLDE with the graphical interface. You are asked for a new workspace each time the IDLDE is opened because there are files with your preferences which get saved each time you exit the IDLDE. These files are opened, and remain active, in the first session of the IDLDE that starts. There cannot be multiple instances of the IDLDE accessing and writing these files at the same time. If you have a list of save files that you want to process then you can create a batch script in IDL to restore these save files. This is not the same as a batch script which gets executed by the command prompt, however. You may want to read the following documentation page regarding batch jobs in IDL. I think that it may help provide insight to what you are trying to do.
http://www.exelisvis.com/docs/BatchJobs.html