Багато хорошої інформації вже опубліковано тут -
наприклад, дужки «Оператор групування
що дозволяє об'єднати послідовність команд разом
використовувати його там, де оболонка CMD зазвичай очікує одну команду
з'явитися" що - подібні до почати блок і кінцевий блок " -
але деякі прості речі були пропущені:
1. Як не отримати помилку "несподіваного в цей час"
Ви можете отримати щось корисне
просто набравши команду (и) на More?
підказка:
C:\> (
More? date /t
More? )
Tue 04/11/2017
C:\> (
More? dir \Windows\win.ini
More? )
Volume in drive C is OS
Volume Serial Number is ▒▒▒▒-▒▒▒▒
Directory of C:\Windows
08/13/2014 12:26 PM 435 win.ini
1 File(s) 435 bytes
0 Dir(s) ▒▒▒,▒▒▒,▒▒▒,▒▒▒ bytes free
C:\>
Ви можете вводити кілька команд на окремих лініях, і ви можете переміщати )
до кінця останнього рядка:
C:\> (
More? date /t
More? time /t
More? )
Tue 04/11/2017
06:18 PM
C:\> (
More? date /t
More? time /t)
Tue 04/11/2017
06:18 PM
C:\>
2. Як це зробити (
і )
впливають на значення команди?
Як вказують інші, є такі команди
C:\> for %f in (\Windows\*.dll) do @echo %f
де (
… )
є частиною синтаксису самої команди
( FOR
, в цьому випадку).
Якщо видалити дужки, ви отримаєте синтаксичну помилку.
Я не говорю про це.
Як зазначено ad nauseam , круглі дужки групи команд.
Розглянемо цей командний рядок:
echo cat & echo dog | findstr /n a
Це означає
- Зробіть
echo cat
,
і потім
- Зробіть
echo dog | findstr /n a
Оскільки слово "собака" не містить літери "а",
ця команда не дасть виводу.
Відповідно, вихід для вищезгаданого є
C:\> echo cat & echo dog | findstr /n a
cat
Аналогічно
C:\> echo cat & echo dog | findstr /n o
cat
1: собака
в якому ми отримуємо додаткові 1: собака
вихід,
тому що "собака" робить містити "o",
і "собака" є першим ( 1 в) лінія вводу в findstr
команду.
Тепер розглянемо
(echo cat & echo dog) | findstr /n a
(те ж, що й вище, але з доданими дужками), що означає
- Зробіть
echo cat
,
і потім
робити echo dog
, і
- Візьміть вихідний сигнал з вищезазначеного і вкажіть його
findstr /n a
Тому,
C:\> (echo cat & echo dog) | findstr /n a
1: кіт
C: \ t (ехо-собака) findstr / n o 2: собака
тому що вихід з лівого боку (# 1) командного рядка
cat
dog
і "a" знайдено на лінії 1 цього тексту,
і "o" знайдено на лінії 2 .
Ми більше не отримуємо вихідний рядок, який говорить тільки cat
(без номера рядка)
тому що echo cat
більше не є самостійною командою,
але є частиною групи що становить ліву сторону трубопроводу.
Ось простий приклад групування команд:
C:\Temp> echo cat & echo dog > animals
cat
C:\Temp> type animals
dog
C:\Temp> (echo cat & echo dog) > animals
C:\Temp> type animals
cat
dog
І, звичайно, як показано вище і в інших відповідях,
можна додати розриви рядків у групі:
C:\> (
More? echo cat
More? echo dog
More? ) | findstr /n a
1: кіт
3. Чи створюють дужки нові екземпляри CMD?
Я так не думаю; не будь-яким очевидним, значущим чином:
C:\> (cd windows)
C:\Windows> set a=aardvark
C:\Windows> (set a=bat)
C:\Windows> echo %a%
bat
Зверніть увагу, що cd
у дужках
змінює робочий каталог основного процесу CMD,
і set
у дужках
перевизначає значення змінної, встановлене за межами дужок.