Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
RaDM
5 / 7 / 1
Регистрация: 14.12.2015
Сообщений: 140
#1

Нужна справка по скобкам, кавычкам, пробелам и тильде

20.07.2016, 15:42. Просмотров 1406. Ответов 1
Метки нет (Все метки)

Подход снизу. С другой стороны. Нет такой справки.(Для циклов и прочего) Разные примеры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2016, 15:42
Ответы с готовыми решениями:

Нужна справка по командам
Нужна справка по командам к каждой строчке @echo off set "v=%*"& call :%~1...

Нужна справка по ЗИПархиватору на русском языке
Гуглил - все ссылки битые. Вроде, разработчик Iгорь Pавлов. А справка почему-то...

Нужна справка по CSS
Добрый день, уважаемый форум! Столкнулся тут со следующей проблемой. Скачал для...

Нужна справка по компонентам
Я хочу сделать плэйер с помощью компонента windowsmediaplayer.ocx (ActiveX)....

Нужна справка по xamarin
Посоветуйте что-нибудь русскоязычное для изучения процесса разработки...

1
Dragokas
Эксперт WindowsАвтор FAQ
16966 / 7051 / 856
Регистрация: 25.12.2011
Сообщений: 10,861
Записей в блоге: 16
21.07.2016, 18:28 #2
Циклы

Windows Batch file
1
for /?
Циклические операции и примеры (команда FOR)

Кавычки.

1. Про кавычки в циклах читайте статью выше.
2. Для прочих случаев:

2.1. Кавычки требуются чтобы передать команде строку, содержащую пробел, в качестве единого параметра
(по умолчанию, пробелы служат для разделения параметров). Пример:
Windows Batch file
1
md 1 2 3
создаст 3 папки.

Windows Batch file
1
md "1 2" 3
создаст 2 папки: "1 2" и "3".

2.2. Также кавычки используются для экранирования некоторых служебных символов, таких как ^&)<>|
Актуально и для циклов, только там правила немного другие, пример:

Windows Batch file
1
for /f %%a in ('"program.exe | find "line""') do set ret=%%a
Обрамление знаками ' - признак команды внутри скобок.
Обрамеление знаками " - для экранирования знака | Иначе пришлось бы писать так ^|
Запустится программа program.exe, в ее выводе отфильтруются строки, содержащие слово "line", результат запишется в переменную ret (только последняя строка).

for без /f

Windows Batch file
1
for %%a in (word1 word2 word3) do echo %%a
Выведет 3 слова.
Windows Batch file
1
for %%a in ("word1 word2" word3) do echo %%a
Выведет
"word1 word2"
word3
Эффект тильды (убирает обрамляющие кавычки):

Windows Batch file
1
for %%a in ("word1 word2" word3) do echo %%~a
Выведет
word1 word2
word3
2.3. Отдельные правила парсинга кавычек у процесса cmd. Читать справку cmd /? (ключи /s /c /k и первые два примечания)

Скобки.

1. Скобки используются в математике для задания приоритета операций.
Подробнее:
Windows Batch file
1
set /?
Математические рассчеты можно выполнить с помощью set с ключем /a.
Пример:
Windows Batch file
1
set /a x=(1+2)*2
Для некоторых математических операторов требуется экранирование, например:
Windows Batch file
1
2
3
4
<< >>                    - двоичный сдвиг
    &                   - двоичное И
    ^                   - двоичное исключающее ИЛИ
    |                   - двоичное ИЛИ
и др., т.к. здесь все эти символы являются служебными, например, | - это канал.
Примеры экранирования:
Windows Batch file
1
2
set /a "x=3|5"
set /a x=3^|5
2. Скобка как специальный символ.

2.1. Используется в циклах, как часть его синтаксической конструкции. (см. статью выше)
2.2. Для объединения потоков.
Пример:
Windows Batch file
1
2
3
4
(
  echo line1
  echo line2
) > file.txt
2.3. Для изменения порядка выполнения команд (в редких случаях с циклами).
Пример:
Windows Batch file
1
(for /L %%a in (1,1,3) do echo %%a) & goto :eof
Выведет 3 цифры и выйдет из пакетного файла,
в противном случае (без скобок), выйдет сразу после первой цифры.

2.4. Как часть синтаксиса команды IF
Пример:
Windows Batch file
1
2
3
4
5
6
7
8
9
set a=1
 
if %a%==1 (
  команда1 для TRUE
  команда2 для TRUE
) else (
  команда1 для FALSE  
  команда2 для FALSE  
)
Тоже самое как однострочник:

Windows Batch file
1
2
set a=1
if %a%==1 (команда1 для TRUE & команда2 для TRUE) else (команда1 для FALSE & команда2 для FALSE)
2.5. Для "заморозки" переменных (читайте статью ниже про спец.символ ! ).

...еще мог пропустить какие-то случаи.

Знак !

SetLocal и расширенная обработка команд
еще примеры: Принцип составления однострочных команд Batch

Знак ~ (тильда)

Используется для параметров:
- переданных в бат-файл
- полученных внутри подпрограммы (при переходе к метке комадой call)
- для переменной цикла

Сама по себе ~ выполняет операцию отсечения обрамляющих кавычек.
пример:
%~1 - убирает кавычки из первого переметра, переданного в бат-файл или по метке.
%%~a - тоже самое для переменной %%a цикла.

~ вместе с модификатором имеет другое поведение (см. for /?):
Примеры.
Windows Batch file
1
Размера файла : %~z1
Соответственно, для цикла - это:
Windows Batch file
1
Размера файла : %%~za
(для буквы a). В случае запуска цикла из-под командной строки (а не бат-файла), знаки процентов удваивать не нужно.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 18:28

Нужна справка о прерываниях
Есть задача : преобразовать десятичное число, записанное в Ascii кодах в...

Нужна справка о форумах Oracle
Подскажите пожалуйста, где можно посмотреть 'лучшие' решения в примерах по...

Нужна справка по константам Windows
Нужен список и объяснение к ним.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru