When you combine multiple commands, you may need a way to group commands to prevent conflicts or to ensure that an exact order is followed. You group commands using a set of parentheses. To understand why grouping may be needed, consider the following example. Here, you want to write the host name, IP configuration, and network status to a file, so you use this statement:
hostname & ipconfig & netstat -a > current-config.log
When you examine the log file, however, you find that it contains only the network status. The reason for this is that the command line executes the commands in sequence as follows:
- hostname
- ipconfig
- netstat – a > current_config.log
Because the commands are executed in sequence, the system host name and IP configuration are written to the command line, and only the network status is written to the log file. To write the output of all the commands to the file, you would need to group the commands as follows:
(hostname & ipconfig & netstat -a) > current_config.log
Here, the output of all three commands is collected and then redirected to the log file. You can also use grouping with conditional success and failure. In the following example, both Command1 and Command2 must succeed for Command3 to execute:
(cd C:\working\data & xcopy n:\docs\*.*) && (hostname >
n:\runninglog.txt)