Вопрос:

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

windows batch-file

14684 просмотра

3 ответа

96 Репутация автора

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

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

что ^значит?

Автор: user3059908 Источник Размещён: 03.12.2013 04:19

Ответы (3)


19 плюса

6022 Репутация автора

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

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

Документация говорит:

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

Автор: Infinite Recursion Размещён: 03.12.2013 04:28

16 плюса

5233 Репутация автора

Символ каретки '^' служит двум целям в пакетных файлах 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 ^^
Автор: Sunny Размещён: 03.12.2013 06:05

10 плюса

107675 Репутация автора

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

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

Автор: dbenham Размещён: 03.12.2013 11:23
Вопросы из категории :
32x32