что означает символ ^ в Batch-скрипте

В этой команде:

FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A" 

что означает « ^ ?

Символ ^ (также называемый кареткой или circumflex) является escape-символом в Batch-скрипте. Когда он используется, следующий символ интерпретируется как обычный символ.

В вашем скрипте вывод команды TYPE должен быть записан как вход в команду FIND.
Если вы не используете escape-символ ^ перед | , то регулярное значение | является символом трубы .

Документация гласит:

Для отображения символа (|) или перенаправления (<или>) при использовании эха используйте символ каретки непосредственно перед символом канала или перенаправления (например, ^>, ^ <или ^ |). Если вам нужно использовать символ каретки (^), введите два (^^).

Характер каретки ‘^’ служит двум целям в пакетных файлах Windows:

1. Продолжение строки:

~~~

 @echo off dir ^ /ad ^ c:\temp 

~~~~

приводит к dir / ad c: \ temp, в котором перечислены только каталоги в C: \ temp.

2. Выход из зарезервированных символов оболочки и | (<> ^.

Используйте предыдущую каретку для выхода и печати символа:

 echo this pipe will print ^| but this one won't | echo and this will print one caret ^^ 

Бесконечная recursion описывает общее поведение ^ , но немного расплывчата в том, почему она должна использоваться внутри IN ('yourCommand') .

yourCommand фактически выполняется неявно в рамках собственного процесса CMD.EXE с использованием C:\Windows\system32\cmd.exe /c yourCommand . Очевидно, что труба должна быть включена в команду в вашем случае. Но вся строка должна анализироваться парсерным парсером, прежде чем он сможет передать предложение IN (), которое должно быть выполнено. Без ^ , | путает парсерный парсер. ^ Экранирует (защищает) канал во время начального парсинга.

  • Ошибка пакетного файла Windows. Как может 30000000000000 равняться 40000000000?
  • Получить размер каталога в «MB» с помощью командного файла
  • Как заменить подстроки в пакетном файле windows
  • Возникли проблемы с вложенным IF в пакетном файле
  • Отображение вывода командной строки Windows и redirect ее в файл
  • DOS пакетный цикл FOR с FIND.exe удаляет пустые строки?
  • Пакетные файлы Windows: что такое переменное расширение и что означает EnableDelayedExpansion?
  • Несколько меню выбора в пакетном файле?
  • Деление плавающей запятой в пакетном файле
  • пакетный скрипт - чтение строки за строкой
  • Файл старше 4 минут в пакетном файле
  • Давайте будем гением компьютера.