What does "&&" do in this batch file?

103,151

Solution 1

&& runs the second command on the line when the first command comes back successfully (i.e. errorlevel == 0). The opposite of && is ||, which runs the second command when the first command is unsuccessful (i.e. errorlevel != 0).

Solution 2

&    separates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatenate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution time, turned with SetLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.

%* (%*) the entire command line.

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.
Share:
103,151

Related videos on Youtube

Kit
Author by

Kit

Updated on July 09, 2022

Comments

  • Kit
    Kit almost 2 years

    I received a line of code from someone who answered one of my questions, but I am confused: what do the "&&" do in this batch file.

    @echo off
    set /p Quest="How are you today? "
    echo %Quest% > Results.txt
    findstr /r /i "not.*good not.*well" Results.txt >nul && echo Sorry && goto pause
    findstr /i "good well" Results.txt >nul && echo My day is doing good as well
    :pause
    pause
    
    • Mathemats
      Mathemats about 9 years
    • Kit
      Kit about 9 years
      @Mathemats Thanks for linking me to website, it has everything I need.
    • SomethingDark
      SomethingDark about 9 years
      It's definitely a good beginning site, but take note that a good chunk of it is outdated or obsolete - everything on the debug page, for example.
    • Kit
      Kit about 9 years
      @SomethingDark Okay, I will keep that in mind while I learn from it.
    • CrouZ
      CrouZ over 8 years
      The "eqivalent to" column on that page is not eqivalent when output redirection is used, see this post: stackoverflow.com/a/10358437/1941779
  • Kit
    Kit about 9 years
    Thanks for the clarification, really helped
  • Kit
    Kit about 9 years
    Thanks for this list.
  • user4317867
    user4317867 about 9 years
    Here's a reference page for Win XP (lol) but still contains helpful information. microsoft.com/resources/documentation/windows/xp/all/proddoc‌​s/…
  • riderBill
    riderBill over 6 years
    +1 for putting all that in one place. I don't understand the comma description. copy /b file1,, returned "The file cannot be copied to itself." I ran it from the command line. Would it do something different from within a batch file?
  • Deilan
    Deilan about 6 years
    Where it comes from?
  • Spandyie
    Spandyie over 5 years
    @user4317867 the link is broken
  • Tom Ozx
    Tom Ozx about 5 years
  • Dawid Ohia
    Dawid Ohia almost 5 years
    a clarification about one ampersand & "Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command. " So I understand, that commands separated with & runs sequential like with &&, but they run always (no matter the errorlevel of a previous command) –
  • cowlinator
    cowlinator almost 5 years
    Great info, but what is the source?