PDA

View Full Version : Multiple dos cmds in a cmd box does not seem to work


peterxcollins
09-10-2003, 11:04 PM
in win xp if i go to a dos box ( via run , cmd ) and type at the cmd prompt,

echo Hello & dir & echo hello again

I get

H:\tmp>
H:\tmp>echo Hello & dir & echo hello again
Hello
Volume in drive H is Homedirs
Volume Serial Number is E4A4-69C6

Directory of H:\tmp

11/09/2003 01:59 PM <DIR> .
11/09/2003 01:59 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 8,605,827,072 bytes free
hello again


which id the expected output.

But if i put the same command in Progam/command VB pro gives

Failed to create process: The system cannot find the file specified.


Should not i get the same output as from the dos command line - or how do i enter multiple dos commands in the one command box , without piping

kinook
09-11-2003, 06:31 AM
Command shell capabilities such as internal commands like echo, dir, copy, etc., and multiple commands (&), piping (|), and redirection (> >>) are implemented by the Command Interpreter (cmd.exe). Prefix your command string with '%DOSCMD% ' to have it run under the command interpreter and enable this functionality; otherwise VBP will attempt to execute the program 'echo'. This is the explanation from the 'Run Program' help topic (looks like it needs to be updated to mention & as well):

Note: To run batch files (.bat), command scripts (.cmd), or individual shell commands, the command should be prefixed with the DOSCMD system macro (i.e., %DOSCMD% "C:\MyBatch.bat" arg1 arg2 or %DOSCMD% copy "%PROJDIR%\Test.exe" \\server\deploy) so that the command is executed under a command shell/interpreter. Also, if you need to redirect (> or >>) or use piping (|) on the output of an executable, the command should also be prefixed with DOSCMD, since the command interpreter is what implements redirection/piping.

peterxcollins
09-11-2003, 08:03 PM
I made a mistake. I understand why need to have '%DOSCMD% .
I can not believe i missed the problem , but i did.