Если я заканчиваю строку в cmd символом ^ , он запросит дополнительные данные.

D:\some\folders>do ^
More? stuff

Допустим, я не хочу входить do каждый раз, когда я хочу что-то делать, поэтому я помещаю это в .bat, и скажем, stuff я хочу делать, меняется каждый раз. Поэтому я создаю следующий файл .bat:

do ^

и я запускаю его и ожидаю, что он попросит More? так что я могу ввести свои stuff . Но это не так. Это ничего не делает для вечности. Как мне заставить это работать?

2 ответа2

1

Символ ^ является символом "escape" командного файла. Когда используется в конце строки, он становится символом продолжения строки, который используется для обработки нескольких строк как одной строки.

Итак, в командном файле, если вы положите в

echo This ^
is a single ^
line!

Он обрабатывает это как одну строку, эквивалентную:

echo This is a single line!

Если в пакете нет "следующей строки", как в примере с одной строкой do ^ , нет следующей строки для добавления, поэтому она ничего не добавляет (и, следовательно, кажется, ничего не делает).

Когда вы используете ^ line-продолжение в командной строке, он покажет вам More? запрос, потому что вы сказали, что хотите продолжить команду на следующей строке, после чего вы можете продолжить команду, например:

Y:\>echo This ^
More? is a single ^
More? line!
This is a single line!

Чтобы остановить пакетный файл и запросить ввод, вам нужно использовать set /p , который запросит ввод, а затем назначит этот ввод переменной. например:

set /P name="What Is Your Name? "
echo Hello %name%!
0

Если вы хотите, чтобы пакет запрашивал ввод, вы будете использовать set /p. Например, чтобы создать переменную% stuff%, которую вы можете использовать в пакете, команда будет выглядеть следующим образом.

set /p stuff=What stuff do you want to do?:

Это поставит подсказку «Какие вещи вы хотите сделать?"и вы можете ввести материал, это будет в переменной% stuff%, которую вы можете использовать в другом месте вашего скрипта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .