Sign in to follow this  
Followers 0

Run multiple DOS commands in one line

10 posts in this topic

#1 ·  Posted

I just stumbled across this sublime technique of concatenating DOS commands with &&, in order to run them on the same line.

EXAMPLE -- Does all of this in ONE execution of RunWait().. :)

  • set current drive to C:
  • change path to WINNT folder
  • collect the list of files there into a temporary file
  • open the file in your text editor
RunWait( @COMSPEC & " /c C:&&cd \winnt&&dir>D:\temp\multi.txt&&D:\temp\multi.txt", "", @SW_SHOW )
1 person likes this

Share this post


Link to post
Share on other sites



#3 ·  Posted (edited)

in dos what this does is the following:

Command A & Command B --> execute command A, then execute command B. (no evaluation of nothing)

Command A | command B --> execute command A, and redirect all it's output into the input of command B.

Command A && Command B ---> means execute command A, Evaluate the errorlevel after running Command A, and if the exit code (errorlevel) is 0, only then execute command B.

Command A || command B ---> execute Command A, evalutate the exit code of this command and if it's anything but 0, Only then execute command B.

command A >> outputfile.txt 2>&1 ---> means execute command A, and write the STDERR Output to STDOUT

examples:

dir c:\ & echo All done!

help | more

or

type c:\windows\system32\drivers\etc\hosts | find /I "Microsoft"

dir c:\windows || echo I can't find this directory c:\windows

dir>c:\file.txt 1<&2 (explain me why you see the dir command send it's output to the dosbox, while I clearly specify that I should output it to c:\file.txt......

if you want to read more about this look use command redirection operators

http://www.microsoft.com/resources/documen...n.mspx?mfr=true

--reason edit-- More examples of all commands :)

Edited by lordofthestrings

Share this post


Link to post
Share on other sites

#4 ·  Posted

Great! Thanks, lots, it's nice to have the whole picture :)

Share this post


Link to post
Share on other sites

#5 ·  Posted

I just stumbled across this sublime technique of concatenating DOS commands with &&, in order to run them on the same line.

EXAMPLE -- Does all of this in ONE execution of RunWait().. :)

  • set current drive to C:
  • change path to WINNT folder
  • collect the list of files there into a temporary file
  • open the file in your text editor
RunWait( @COMSPEC & " /c C:&&cd \winnt&&dir>D:\temp\multi.txt&&D:\temp\multi.txt", "", @SW_SHOW )

 

I had to create and account to let you know that this info just turned my project from a disaster to a success. Thank you for your help!! This forum is spectacular.

Share this post


Link to post
Share on other sites

#6 ·  Posted

Great find, thanks for sharing.


 Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.
If I put effort into communication, I expect you to read properly & fully, or just not comment.

Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox

Share this post


Link to post
Share on other sites

#8 ·  Posted

RunWait( @COMSPEC & " /c C:&&ipconfig /release&&ipconfig /renew", "", @SW_HIDE)

Share this post


Link to post
Share on other sites

#9 ·  Posted

I just stumbled across this sublime technique of concatenating DOS commands with &&, in order to run them on the same line.

EXAMPLE -- Does all of this in ONE execution of RunWait().. :)

  • set current drive to C:
  • change path to WINNT folder
  • collect the list of files there into a temporary file
  • open the file in your text editor
RunWait( @COMSPEC & " /c C:&&cd \winnt&&dir>D:\temp\multi.txt&&D:\temp\multi.txt", "", @SW_SHOW )

Many thanks to trids for posting this - it did the job perfectly for me in VB 2008...

Dim sMyCommand As String
        sMyCommand = "cd test01&&dir>multi.txt
        Shell("cmd /c " & sMyCommand, vbHide)

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

This one works.

RunWait( @COMSPEC & " /c C:&&cd \Tools&&dir>D:\temp\multi.txt&&D:\temp\multi.txt", "", @SW_SHOW )

But the below one doesn't. Can't we use ShellExecute with @COMPSPEC ?

because i would like to run cmd as admin using  IsAdmin() Which uses ShellExecute()
 

ShellExecute( @COMSPEC & " /c C:&&cd \Tools&&dir>D:\temp\multi.txt&&D:\temp\multi.txt", "", @SW_SHOW )

Thanks

Edited by lexicon

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0