Jump to content

Run multiple DOS commands in one line


trids
 Share

Recommended Posts

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 )
Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • 5 years later...

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.

Link to comment
Share on other sites

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.

Spoiler

What is the Secret Key? Life is like a Donut

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 (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Link to comment
Share on other sites

  • 4 weeks later...
  • 7 months later...

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)
Link to comment
Share on other sites

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
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...