Есть следующий bat файл с кодом
for /l %%i in (1,1,10) do echo >%%i.php
Нужно сделать чтобы он создавал файлы вот так
for /l %%i in (1,1,10) do echo
>%%i.php
Но так попробовал не работает.
- Вопрос задан 26 дек. 2018
- 1161 просмотр
Знак ^ = экранирует спец символы
Если надо пустую строку, то можно сделать так echo. >> %%i.php (т.е. точка на конце echo)
В первой команде используется > чтобы перезаписать файл при повторном вызове, в отличие от >> который добавляет данные без перезаписи
Я вот пытался с трех строк тоже сделать
А можете подсказать, как сделать с переменными
типа
1=какой то текст 1
2=какой-то текст 2
3=какой-то текст 3
и потом писать что-то вроде echo %1%
Надеюсь я правильно объяснил))) мб нужна команда set
А можете подсказать, как сделать с переменными
типа
да через SET, по-моему так (у меня линукс не могу проверить)
Еще одним полезным свойством символа "^" является перенос строк.
То есть, если текст вашей команды слишком длинный, то это делает сценарий менее наглядным и удобочитаемым.
Символ ^ должен быть последним в строке и означает, что следующая строка является продолжением текущей.
Возможно разделение более, чем на две строки. Предел не проверял ).
В официальной документации описание такого действия знака ^ не нашел.
Опытным путем установил, что если в команде FOR такой разрыв поставить после IN и перед круглой скобкой, то произойдет ошибка разбора. Возможен разрыв строки команды FOR перед IN. При этом в следующей строке IN должен следовать с первой позиции.
Наличие такого исключения позволяет полагать, что возможно и в других сложных операторах могут возникнуть проблемы с разрывом строки. Используйте эту возможность аккуратно.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Автор: Алексей Александров
Источник: RSDN Magazine #2-2005
Опубликовано: 11.07.2005
Исправлено: 10.12.2016
Версия текста: 1.0
Введение Как экранировать символ? Как перенести длинную строку? Как определить имя каталога, в котором находится запущенный командный файл? Как получить короткое (8.3) имя файла? Как перенаправить стандартный вывод в файл? Как сложить два числа? А можно создать в bat-файле функцию? Как можно избежать использования goto? Как обработать текстовый файл? Что это за упомянутые ранее операторы объединения команд? Можно ли написать на bat-языке серьезную программу? Материалы по теме | |
Введение
Мы все любим писать серьезные вещи на серьезных языках. Шаблоны, C++, Reflection, Perl и многое другое – вот то, что мы любим, то, чему посвящаем длинные сообщения в форумах, то, что снится нам по ночам.
Однако в нашей повседневной деятельности встречаются и вещи, которые не так интересны и интеллектуальны. Мы не очень любим говорить об этом, делаем вид, что Это – грязно, нечистоплотно и недостойно нашего внимания. Однако, приходит день, приходит час и перст Судьбы находит нас – нам надо написать еще один батничек… Иногда это запускалка для построения проекта, которая должна при ошибке компиляции скопировать логи на сетевой диск, иногда – запуск обновления исходных текстов из SVN. Иногда – что-нибудь еще.
К чему я это все? А к тому, что поговорим мы о полезных хитростях при написании файлов сценариев на встроенном командном языке Windows. К счастью, это занятие не является доминирующим в профессиональной деятельности автора, так что я не обязуюсь заполнить абсолютно все пробелы в данной области. Кроме того, рожденный ползать летать не может, и из cmd.exe, увы, не получится ни /usr/bin/perl, ни даже /bin/sh. Так что, все нижеприведенное – просто некоторые интересные факты из жизни файлов с расширением bat, на которые автор обратил внимание во время решения различных практических задач автоматизации.
Наш урок будет построен по сугубо практическому принципу, известному в народе как Cookbook. Иными словами, я не буду вдаваться в синтаксические и семантические дебри командного языка Windows, а лишь продемонстрирую его возможности (хотел написать «мощь», но все-таки передумал). Именно поэтому большинство следующих заголовков будет начинаться со слова «Как». Впрочем, для полноты по ходу развития событий будут даваться подробные комментарии, в том числе и по языковым конструкциям.
ПРЕДУПРЕЖДЕНИЕ |
Практически все описанные здесь рецепты подойдут только для Windows 2000 и старше. Bat-язык Windows 9x, к счастью, можно считать почившим, так что здесь он не рассматривается. Более того, диалекты cmd.exe операционных систем Windows 2000, Windows XP и Windows Server 2003 также немного различаются. Все приведенное ниже создано и проверено на компьютере под управлением операционной системы Windows XP. За подробной информацией по различиям в реализации той или иной команды обращайтесь к [1].
Как экранировать символ?
В командном языке Windows существует некоторый набор символов с высоким приоритетом, которые всегда трактуются как спецсимволы. К ним, в частности, относятся:
- Операторы перенаправления ввода-вывода , >>.
- Оператор конвейера |.
- Операторы объединения команд ||, & и &&.
- Оператор разыменования переменной %…%.
В случае если символ, относящийся к одному из таких операторов, должен быть включен в вашу команду в его литеральном смысле, вас ждут определенные неожиданности. Например, при выполнении вот такой строки
символ процента будет «съеден» интерпретатором, который решит, что это попытка вывода значения какой-то переменной. В случае со знаком процента решение довольно хорошо известно и состоит в удвоении этого символа:
после чего все заработает так, как надо. Однако в других случаях все менее очевидно. Рассмотрим командный сценарий, который генерирует незатейливый HTML-файл:
К сожалению, при попытке запуска этого "чуда инженерного разума" нас постигнет неудача в виде сообщения об ошибке
Оно и понятно: командный интерпретатор не в силах разобраться, где его просят вывести на экран символ HTML-тега, а где перенаправить вывод. В нормальных языках программирования эта проблема обычно решается обрамлением строковых литералов кавычками. Отчасти это помогает и в bat-файлах. Но лишь отчасти. Выполнение строки
приведет к тому, что в выходной файл будут записаны и сами кавычки. Это явно не совсем то, что требуется.
К счастью, есть один малоизвестный способ, позволяющий добиться требуемого результата. Символ ^ позволяет экранировать любой другой символ с безусловным приоритетом. Таким образом, вышеприведенный пример генерации HTML может быть успешно записан так:
Таким же способом можно экранировать любой другой специальный символ. Очевидно, можно экранировать и сам ^. Не очень эстетично, зато дешево и практично. Слово «надежно» я пропустил умышленно…
Как перенести длинную строку?
Совет по поводу экранирующего символа ^ имеет еще одно применение: перенос строк. Я (как и многие из вас, наверное) люблю, чтобы любой исходный текст, который я пишу, выглядел красиво – даже *.bat-файлы. Одним из обязательных условий красоты и удобочитаемости кода для меня является его ширина: все строки должны умещаться в 78 столбцов. Можно поспорить по поводу числа 78, но в одном я непреклонен – ограничение на ширину текста кода должно быть, иначе это не код, а макароны.
Так вот долгое время *.bat-файлы портили мне жизнь тем, что иногда приходилось писать длинную строку – например, вызов какой-нибудь другой программы с кучей опций, и я не знал, что с этим делать. Происходило это нечасто, но всегда было неприятно. Но, к счастью, моя жизнь изменилась с тех пор, как я открыл для себя Супер-Символ ^:
Помните лишь, что чудо-символ должен быть последним в строке – скажите «Нет!» концевым пробелам.