You can do a standard redirect, eg
spool demo.lst
select * from dual;
host my_command >> demo.lst"
but... spool is a *buffered* write facility, ie, we buffer things and flush them out from time to time...so you might have some ordering issues.
Similarly on windows you might have some dramas, eg
SQL> spool c:\temp\demo.lst
SQL> select * from dual;
D
-
X
1 row selected.
SQL> host cmd /c "echo hello2 >> c:\temp\demo.lst"
The process cannot access the file because it is being used by another process.
SQL> spool off
As a consequence, you might be better served moving the entire "spooling" concept to the OS itself, eg (from ksh in this instance)
print "
select * from dual
host my_command" | sqlplus 1>demo.lst 2>&1
Hope this helps.