Hmm... this is working for me...
c:>bcp "select text from sys.syscomments where id=OBJECT_ID('procname')" QUERYOUT "procname.sql" -S server -d database -T
Even better, if I create a text file of proc (or view, function or trigger) names:
c:>for /f %f in (proclist.txt) do @bcp "select text from sys.syscomments where id=OBJECT_ID('%f')" QUERYOUT "%f.sql" -S server -d database -T
If using a version of bcp that doesn't support -d database, then modify the query to:
select text from database.sys.comments
Wish there was a bit easier way to extract table DDL (yes, there's SMO)...