Batch команды: Команды BAT файлов

Содержание

Урок bat-аники



Урок bat-аники
Автор: Алексей Александров

Источник: RSDN Magazine #2-2005
Опубликовано: 11.07.2005

Исправлено: 10.12.2016
Версия текста: 1.0

Введение

Мы все любим писать серьезные вещи на серьезных языках. Шаблоны, 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 существует некоторый набор символов с высоким приоритетом, которые всегда трактуются как спецсимволы. К ним, в частности, относятся:

  • Операторы перенаправления ввода-вывода <, >, >>.
  • Оператор конвейера |.
  • Операторы объединения команд ||, & и &&.
  • Оператор разыменования переменной %…%.

В случае если символ, относящийся к одному из таких операторов, должен быть включен в вашу команду в его литеральном смысле, вас ждут определенные неожиданности. Например, при выполнении вот такой строки


      echo
      The ratio should be up to 10%.
    

символ процента будет «съеден» интерпретатором, который решит, что это попытка вывода значения какой-то переменной. В случае со знаком процента решение довольно хорошо известно и состоит в удвоении этого символа:


      echo
       The ratio should be up to 10%%.
    

после чего все заработает так, как надо. Однако в других случаях все менее очевидно. Рассмотрим командный сценарий, который генерирует незатейливый HTML-файл:


      @echo
      
      off
      
      set OUTPUTFILE=%1

echo<html>                                  >%OUTPUTFILE%
echo<head>                                 >>%OUTPUTFILE%
echo<title>This is a greeting page</title> >>%OUTPUTFILE%
echo</head>                                >>%OUTPUTFILE%
echo<body>                                 >>%OUTPUTFILE%
echoHello World!                           >>%OUTPUTFILE%
echo</body>                                >>%OUTPUTFILE%
echo</html>                                >>%OUTPUTFILE%

К сожалению, при попытке запуска этого «чуда инженерного разума» нас постигнет неудача в виде сообщения об ошибке


> was unexpected at this time.
    --deliver-target=ftp://ftp.site.com

Помните лишь, что чудо-символ должен быть последним в строке – скажите «Нет!» концевым пробелам.

Как определить имя каталога, в котором находится запущенный командный файл?

Иногда сценарию надо знать полный путь к себе самому и/или к каталогу, в котором он находится. Это может понадобиться по разным причинам. Например, он должен достать из системы контроля версий исходники в каталог <script-dir>/src рядом с собой. Или, запускаются тесты из каталога <script-dir>/tests, и перед их запуском надо добавить каталог <script-dir>/bin в переменную PATH.

Можно, конечно, рассчитывать на то, что командный файл был вызван из того же каталога, где он находится, и тогда в качестве вышеупомянутого <script-dir> можно использовать переменную окружения %CD% — полный путь к текущему каталогу. Однако любые допущения в нашем деле недопустимы (хороший каламбур, однако!). Поэтому приведу более надежное решение.

Прежде всего, вспоминаем, что переменная %0 в bat-файле соответствует нулевому аргументу командной строки, т.е. имени самого файла. После этого читаем скудную документацию для команды call:

и обнаруживаем, что при использовании нумерованных переменных %0-%9 можно использовать некоторые модификаторы:


        %~1         - разворачивает %1, удаляя кавычки (")
        %~f1        - разворачивает %1 в полный квалифицированный путь
        %~d1        - разворачивает %1 в букву диска
        %~p1        - разворачивает %1 в путь
        %~n1        - разворачивает %1 в имя файла
        %~x1        - разворачивает %1 в расширение файла
        %~s1        - развернутый путь будет содержать только короткие имена
        %~a1        - разворачивает %1 в атрибуты файла
        %~t1        - разворачивает %1 в дату/время создания файла
        %~z1        - разворачивает %1 в размер файла
        %~$PATH:1   - Ищет в каталогах, перечисленных в переменной среды PATH,
                       и разворачивает %1 в полное квалифицированное имя 
                       первого совпадения. Если имя перменной среды
                       не определено, или если файл не найден, этот 
                       модификатор вернет пустую строку

и, более того:


    Модификаторы можно объединять для получения сложных результатов:

        %~dp1       - разворачивает %1 в букву диска и путь
        %~nx1       - разворачивает %1 в имя файла с расширением
        %~dp$PATH:1 – ищет %1 в каталогах, перечисленных в переменной 
                       среды PATH, и разворачивает в букву диска
                       и путь к первому найденному файлу.
        %~ftza1     - разворачивает %1 в строку, подобную DIR

Таким образом, правильным будет использовать в качестве тега <script-dir> сочетание %~dp0, которое будет раскрыто в полный путь к каталогу, где находится сценарий. Например,


      "%~dp0\packagebin.
    --deliver-target=ftp://ftp.site.com --deliver-source="%~dp0\bin"

Обратите внимание на использование кавычек – потенциально каталог может иметь в своем пути пробел. Кавычки избавят от проблем в этом случае.

ПРЕДУПРЕЖДЕНИЕ

Опасайтесь бездумного применения команды cd %~dp0 без проверки результата выполнения. Теоретически, эта команда должна сменить текущий каталог на каталог, в котором расположен командный файл. Как правило, это работает. Однако возможны неожиданности. Однажды был написан простой командный сценарий, задача которого была просто удалить все каталоги рядом с собой. В «свою» директорию он переходил как раз через cd %~dp0. Все было проверено на локальной машине – работало замечательно. После этого сценарий был помещен на файл-сервер, где ему и полагалось быть. Я зашел с помощью Far в сетевой каталог, и для контрольной проверки решил запустить файл еще раз. Дальнейшее словно в тумане. cmd.exe правильно определил местонахождение bat-файла: \\servername\sharename\directory. Однако при попытке сделать туда cd, он сказал, что UNC-пути в качестве текущих каталогов не поддерживаются и лучше он сменит текущий каталог на C:\WINDOWS… Это было действительно мудрое решение… Часть сценария, отвечавшая за удаление всех каталогов, сработала отлично – хорошо, что я успел вовремя остановить это безумие.

В тот день я узнал, что такое System Restore…

Как получить короткое (8.3) имя файла?

«А зачем? – спросите вы – Ведь мы живем в мире Интернета, Web-сервисов и NTFS с длинными именами файлов». Это действительно так, но иногда встречаются программы, которые отчаянно сопротивляются прогрессу, и в частности, не любят имен файлов и полных путей с пробелами. Одной из таких программ, кстати, является утилита build.exe из Windows DDK… В таких ситуациях спасает использование короткого, «беспробельного» DOS-имени для файла.

ПРЕДУПРЕЖДЕНИЕ

Доступ к файлу по короткому имени может быть не всегда возможен. На файловой системе NTFS создание коротких псевдонимов для файлов может быть отключено путем установки в единицу значения «NtfsDisable8dot3NameCreation» в ключе реестра «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem».

Итак, все же (в предположении, что надругательства над NTFS не было) – как? Внимательный читатель должен был заметить в предыдущем разделе, что при обращении к переменным %0 — %9 можно использовать префикс


%~s1        - expanded path contains short names only

который нам как раз мог бы помочь. Но есть засада – все эти полезные префиксы нельзя использовать с произвольной переменной окружения, а присваивание переменным %0 — %9 не поддерживается. К счастью, описываемые префиксы можно еще использовать с переменными цикла for, и это дает нам способ достичь требуемого результата.> «%PROGRAMFILESSHORT%»

Этот и другие модификаторы можно использовать и с любой другой формой цикла for, подробнее о которых можно узнать из:

Как перенаправить стандартный вывод в файл?

Плоха та короткая программа, которая не стремится стать большой. К сожалению, это правило применимо и к командным файлам Windows тоже – иногда bat-файлы вырастают до довольно больших размеров. Если при этом результат выполняемых команд должен журналироваться, то все становится совсем плохо – почти каждая строка имеет хвостик типа


      echo
      Cleaning up the target directory >>%LOGFILE%
...
echoThe target directory has been cleaned >>%LOGFILE%

Гораздо проще было бы перенаправить стандартный вывод в файл, чтобы все команды echo и вообще, все, что выводится на экран, автоматически попадали в журнальный файл.>

Здесь делается то же, что и раньше, но с перенаправлением стандартного вывода в файл out.html. Делается это простым способом – перезапуском сценарием самого себя. Сначала проверяется, не установлена ли переменная окружения STDOUT_REDIRECTED. Если она установлена, значит, сценарий уже перезапущен с перенаправленным выводом и можно просто продолжить работу. Если же переменная не установлена, то мы ее устанавливаем и перезапускаем скрипт (cmd.exe /c %0) с таким же набором параметров, что и исходная команда (%*) и перенаправленным в файл стандартным выводом (>%OUTPUT%). После завершения выполнения «перенаправленной» команды выходим.

Такое «единовременное» перенаправление имеет и еще один неочевидный плюс: файл открывается и закрывается только один раз, и всем командам и дочерним процессам передается дескриптор уже открытого файла. Во-первых, это чуть-чуть улучшит производительность (жизнь удалась – сроду бы не подумал, что буду когда-нибудь писать о производительности в bat-файлах). Во-вторых, это поможет избежать проблемы с невозможностью открыть файл для записи. Такое может случиться, если после выполнения одной из команд останется «висеть» какой-нибудь процесс. Он будет держать дескриптор интересующего нас файла и перенаправление вывода в этот файл для всех последующих команд провалится. Проблема может показаться надуманной, но однажды она украла у меня 2 часа жизни…

Как сложить два числа?

Краткий ответ – смотри:

Длинный ответ таков. В bat-файлах можно производить довольно-таки продвинутые вычисления – продвинутые не в сравнении с другими языками, а в сравнении с отсутствием возможности что-либо вычислить вообще. Вычисление осуществляется командой set, если она выполняется с ключом /a. Поддерживается практически полный набор операторов языка C, включая шестнадцатеричный модификатор 0x. Переменные окружения в выражении не обязательно заключать в знаки процента – все, что не является числом, считается переменной. Подробнее – все-таки в man set, тьфу, то есть в set /?. А здесь напоследок – просто несколько примеров.


      @echo off

set ARG=1

remset /a RESULT=ARG + 2
echo%RESULT%
remremset /a RESULT="ARG << 2"
echo%RESULT%
remset /a RESULT=0x1234 + 0x6786
echo%RESULT%
rem

А можно создать в bat-файле функцию?

Да, можно. Более того, иногда даже нужно. Правда, функциями это можно назвать условно. Есть особый синтаксис команды call, который позволяет перейти на метку в этом же bat-файле с запоминанием места, откуда был произведен этот вызов:


      call :метка аргументы

Возврат из функции производится командой:


      exit /b [опциональный код возврата]

Ключ /b здесь очень важен: без него будет произведен выход не из функции, а из сценария вообще.

За подробностями обращайтесь к:

Что интересно, команда call с таким синтаксисом поддерживает рекурсивные вызовы с автоматическим созданием нового фрейма для переменных аргументов %0-%9. Иногда это может быть полезным. Вот классический пример рекурсивного подсчета факториала на командном языке:


      @echo off

call :factorial %1
echo %RESULT%
exit
remremremremrem:factorial

if %1 == 0 (
    set RESULT=1
    exit /b
)

if %1 == 1 (
    set RESULT=1
    exit /b
)

set /a PARAM=%1 - 1

call :factorial %PARAM%

set /a RESULT=%1 * %RESULT%

exit /b

Пример работы:


> factorial.bat 10
3628800

Как можно избежать использования goto?

Любой хоть сколько-то осмысленный *.bat-файл длиной больше 50 строк является ярким лозунгом в поддержку работы Дейкстры «О вреде оператора goto». Мешанина из переходов вперед и назад действительно является кодом «только для записи». Можно ли что-то предпринять по этому поводу?

На самом деле можно. Как правило, большинство меток и переходов используются для организации ветвлений при проверке условий, т.е. банальных if-then-else блоков. В оригинале, bat-язык поддерживал только одну команду в блоке then, что автоматически приводило к идиомам вида:


      if condition goto :THEN
remremgoto IF_END
:THEN
remrem:IF_END

Но к счастью, командный интерпретатор cmd.exe современных ОС Windows 2000 и старше поддерживает блоки команд в конструкциях ветвления, что устраняет необходимость применения меток. Блоки команд заключаются в круглые скобки. Выглядит это так (имитируя C/C++ indentation style):


      if condition (
    remrem) else (
    remrem)

Конкретный пример использования:


      @echo off

set BUILDMODE=%1

if "%BUILDMODE%" == "" (
    echoFAIL: Аргумент является обязательным ^(--debug, --release^)exit /b 1
)

remset BUILDMODE=%BUILDMODE:-=%

if "%BUILDMODE%" == "debug" (
    echoINFO: Устанавливаем debug-режим окруженияset CCFLAGS=/Od /MDd /Z7
) else (
    echoINFO: Устанавливаем release-режим окруженияset CCFLAGS=/O2 /MD
)

На мой взгляд, с этим уже вполне можно жить. Но, как всегда, жизнь не так проста, как кажется. Есть одна проблема. Переменные, использующиеся в блоках then и else, раскрываются перед началом выполнения этих блоков, а не в процессе выполнения. В приведенном примере это не вызывает никаких проблем, однако в следующем вызовет:


      if "%BUILDMODE%" == "debug" (
    echoINFO: Устанавливаем debug-режим окружения
set OPTFLAGS=/Od
    set CCFLAGS=%OPTFLAGS% /MDd /Z7
) else (
    echoINFO: Устанавливаем release-режим окружения
set OPTFLAGS=/O2
    set CCFLAGS=%OPTFLAGS% /MD
)

Загвоздка в том, что в обоих блоках подстановка переменной OPTFLAGS произойдет до того, как она будет изменена в процессе выполнения этого блока. Соответственно, в CCFLAGS будет подставлено то значение, которое OPTFLAGS имела на момент начала выполнения данного if-блока.

Решается эта проблема путем использования отложенного раскрытия переменных. Переменные, заключенные в !…! вместо %…%, будут раскрыты в их значения только в момент непосредственного использования. Данный режим по умолчанию отключен. Включить его можно либо использованием ключа /V:ON при вызове cmd.exe, либо использованием команды


      setlocal enabledelayedexpansion

в тексте самого bat-файла. Второй способ мне представляется более удобным – не очень здорово требовать от кого-то запуска твоего сценария с определенным параметром.

С учетом сказанного предыдущий «неправильный» пример может быть исправлен так:


      setlocal enabledelayedexpansion

remif "%BUILDMODE%" == "debug" (
    echoINFO: Setting up debug mode environment
set OPTFLAGS=/Od
    set CCFLAGS=!OPTFLAGS! /MDd /Z7
) else (
    echoINFO: Setting up release mode environment
set OPTFLAGS=/O2
    set CCFLAGS=!OPTFLAGS! /MD
)

Вот теперь это почти полноценный if-then-else блок., иначе синтаксический анализатор путается…

Но в любом случае, это гораздо лучше безумного количества меток и переходов.

Как обработать текстовый файл?

Иногда в командном файле необходимо получить доступ к содержимому некоторого текстового файла и некоторым образом это содержимое обработать. Например, прочитать файл настроек программы.

Для привнесения еще большей конкретики в процесс изучения зададимся целью прочитать файл с настройками следующего содержания:


      
      buildmode=release

compiler=cl.exe

arch=x86

Ничего сверхъестественного – простой key=value формат с возможностью вставки Unix-style комментариев. Помочь в чтении и обработке этого файла нам сможет команда for. Ее дополнительные опции позволяют задать и разделители, и символ начала комментария, и кое-что еще. Вот командный файл, который выполняет поставленную задачу:


      @echo off

remremremcall :read_settings %~dp0\settings.txt || exit /b 1

remechoBuild mode  : %BUILDMODE%echoCompiler    : %COMPILER%
echoArchitecture: %ARCH%
remexit /b 0

remremremrem:read_settings

set SETTINGSFILE=%1

remif not exist %SETTINGSFILE% (
    echoFAIL: Файл с настройками отсутствуетexit /b 1
)

remremremremremremremremremremfor /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
    remremremset %%i=%%j
)

exit /b 0

Обильные комментарии должны помочь легко разобраться, что к чему. За подробностями, как обычно, отошлю к:

Кстати, возможности команды for не ограничиваются чтением из файла. Возможно также чтение вывода другой команды. Например, так:


      @echo off

for /f "tokens=* usebackq" %%i in (`cmd.exe /c ver`) do (
    set VERSION=%%i
)

echo%VERSION%

Особенно меня умиляет наличие опции “usebackq”, которая делает синтаксис отдаленно похожим на юниксовый. И в стенах царства Билла есть граждане, скучающие по /bin/sh и пытающиеся хоть как-то скрасить существование свое и окружающих. Следующий совет это также косвенно подтверждает.

Что это за упомянутые ранее операторы объединения команд?

Это операторы &, && и ||. Они практически совсем не освещены в документации, но полезны в повседневности. Они позволяют объединять несколько команд в одну, т.е. примерно так:


command1 & command2
command1 && command2
command1 || command2

Форма этих операторов весьма соответствует их содержанию. В случае, пожалуй, наименее полезного оператора & вторая команда будет просто выполнена после первой, т.е. это равносильно простой записи:

Оператор && гарантирует, что вторая команда будет выполнена только, если первая была выполнена успешно, т.е. с нулевым кодом возврата (он же %errorlevel%). Такие конструкции очень популярны в мире shell-сценариев Unix. Например:

Я был приятно удивлен, узнав, что cmd.exe тоже умеет выполнять такие конструкции. Это безопаснее и правильнее, нежели простое последовательное выполнение этих команд, и короче и проще, чем строгая проверка и обработка кодов возврата. Очень удобно при написании на скорую руку. Не менее полезен иногда и оператор ||. Суть его тоже логична – выполнить вторую команду, если первая дала сбой. Часто встречается в таких идиомах:

Если перейти в каталог sources не удастся, то будет произведен выход с кодом ошибки 1. Если же первая команда отработает нормально, то вторая выполнена не будет. Например, такая простейшая защита помогла бы в случае с cd по UNC-адресу, описанному ранее.

Можно ли написать на bat-языке серьезную программу?

Пожалуй, нет. Серьезная программа должна все-таки выглядеть серьезно. А все написанное на командном языке Windows таковым назвать можно лишь с о-о-о-чень большой натяжкой. Так что для решения более сложных задач автоматизации лучше все-таки взять что-нибудь более функциональное:

  • Perl
  • Python
  • Ruby
  • JScript / VBScript

Последние, кстати, присутствуют в Windows 2000/XP по умолчанию (с некоторыми функциональными различиями) и в целом могут считаться заменой *.bat языку. Однако сдается мне, что *.bat-файлы проживут еще очень долго.

Дай Бог, чтобы я ошибся…

Материалы по теме

  1. Windows Batch Files – Commands Reference.
  2. Windows 2000. Команды: Карманный справочник. Э. Фриш. – М.: Мир, 2003.

Эта статья опубликована в журнале RSDN Magazine #2-2005. Информацию о журнале можно найти здесь

Команды, используемые в bat файлах — Информатика, информационные технологии

Руководство по написанию пакетных файлов

Материал из Admin Wiki

Перейти к: навигация, поиск

Примеры пакетных файлов.

Содержание[убрать]
  • 1 Введение
  • 2 Советы
  • 2.1 Как создать batch файл?
  • 2.2 Команды, используемые в bat файлах
  • 2.3 Как создать папку с именем равным текущей дате?
  • 2.4 Как зациклить в bat-файле выполнение команды?
  • 2.5 Как в bat-файле создать паузу перед выполнением следующей команды?
  • 2.6 Как запретить повторный запуск приложения?
  • 2.7 Как добавить комментарии в bat-файл?
  • 2.8 Как в bat файле дождаться появления определенного файла
  • 2.9 Как из bat файла обойти проверку даты?
  • 2.10 Как из пакетного файла импортировать значения переменных реестра?
  • 2.11 Как из пакетного файла сделать экспорт реестра?
  • 2.12 Как использовать в пакетном файле символ процент?
  • 2.13 Как переименовать файлы по маске из пакетного файла?
  • 2.14 Как узнать имя компьютера из bat файла?
  • 2.15 Как изменить IP адрес компьютера из пакетного файла?
  • 2.16 Как автоматизировать удаление файлов по типу?
  • 2.17 Как отправить сообщение из bat-файла?
  • 2.18 Как из одного bat-файла запустить другой?
  • 2.19 Как отключить вывод на экран команд при выполнении пакетного файла?
  • 2.20 Как автоматически ответить на запрос о подтверждении?
  • 2.21 Как перенаправить результат выполнения команд в файл?
  • 2.22 Как создать папку из bat файла?
  • 2.23 Как создать файл с произвольным именем из bat файла?
  • 2.24 Как автоматизировать запуск bat файлов?
  • 2.25 Команды, используемые в bat файлах
  • 2.26 Автоматическое создание резервной копии данных
  • 2.27 Описание команд

Править] Введение

В связи с тем, что постоянно возникают вопросы по bat файлам, решено было создать тему следующего содержания. Пакетные или batch файлы — это обычные текстовые файлы, содержащие наборы команд интерпритатора и имеющие расширение bat или cmd (cmd работают только в ОС семейства NT). Редактировать такие файлы можно при помощи блокнота или любого другого текстового редактора. В этом FAQ собраны рекомендации, которые были протестированы на Windows 2000. Некоторые команды и переменные, использованные при написании примеров, отсутствуют в 9х.

Править] Советы

Править] Как создать batch файл?

Откройте блокнот и наберите две следующих строки:

@echo This batch [email protected]

Выберите Файл — Сохранить как, выберите Тип файла — Все файлы, в поле Имя файла введите 1.bat и сохраните его в корне диска С, например. Теперь откройте диск С и запустите файл 1.bat. На экран будет выведено две строки.

This batch fileНажмите любую клавишу для продолжения…

После нажатия любой клавиши окно закроется, т.к. bat-файл выполнен. Обратите внимание, что символ собаки перед каждой командой в bat-файле указывает на то, что саму команду выводить на экран не надо, а нужно вывести только результат ее работы. Чтобы поэкспериментировать удалите символ собаки из начала каждой строки, сохраните и запустите полученный bat файл.

править] Команды, используемые в bat файлах

Список команд, которые можно использовать в bat файлах, можно просмотреть, введя в командной строке (Пуск — Выполнить — cmd для Windows семейтва NT или Пуск — Выполнить — command для линейки 9х) команду

help

Результат работы help — список доступных команд с краткими пояснениями к ним. Чтобы получить более подробную информацию по интересующей команде введите в командной строке help имя_команды. Например, чтобы получить подробную справку по ключам команды AT выполните следующую команду:

help AT

В результате, на экран будет выведен список ключей для запуска команды AT из bat файла. Если bat файл исполняется под управлением Windows (не в чистом DOS-е), то из него можно запускать любые приложения или открывать файлы. Например, нужно автоматически открыть лог-файл работы bat файла по завершении его работы. Для этого достаточно включить в bat файл последней строкой следующую команду:

start имя_файла.txt

Результатом выполнения этой команды станет открытие файла имя_файла.txt, а сам bat файл завершит свою работу. Такой способ хорош, если лог-файл небольшого размера, иначе Блокнот откажется его открывать, предложив использовать WordPad. Но эта проблема так же решаема, что и будет показано в дальнейших примерах.

Статьи к прочтению:

Самые главные и нужные команды дляBAT и CMD


Похожие статьи:
  • Вывод сообщений в bat файлах

    Понятие пакетного файла Пакетный файл (англ. batch file) — текстовый файл в MS-DOS или Windows, содержащий последовательность команд, предназначенных для…

  • Получение справки о командах dos

    Дополнительные устройства. К системному блоку ПК можно подключить различные устройства ввода-вывода информации и расширить его функциональные…

BATCH — сохранить вывод команды в переменную

Команда FOR с параметром /F и команда или командная строка, указанная как установленная (строка в круглых скобках), дополнительно заключенная в, ' могут использоваться для обработки вывода команды или командной строки с несколькими командами в одной строке.| %SystemRoot%\System32\find.exe /I /C «%_process%»‘) DO SET «_count=%%I» IF /I «%_process%» == «cmd.exe» SET /A _count-=1 IF %_count% LSS 2 ( ECHO action 1 ) ELSE ( ECHO action 2 )

Команда FOR запускается в фоновом режиме без видимого окна консоли cmd.exe /C с командной строкой:

C:\Windows\System32\tasklist.exe /FI "IMAGENAME eq cmd.exe" | C:\Windows\System32\find.exe /I /C "cmd.exe"

TaskList опция /FI "IMAGENAME eq cmd.exe" фильтрует вывод TaskList уже к процессам с именем изображения (= имя исполняемого файла) cmd.exe . Это ускоряет дальнейшую обработку и позволяет избежать того, что запущенный процесс с именем файла totalcmd.exe считается так же, cmd.exe как и рассматриваемая командная строка.

Вывод TASKLIST, записанный для обработки STDOUT , перенаправляется для обработки STDIN команды FIND, которая обрабатывает строки и подсчитывает строки, содержащиеся в cmd. в командной строке FOR, чтобы он интерпретировался как буквальный символ, когда интерпретатор команд Windows обрабатывает эту командную строку перед выполнением команды FOR, которая выполняет встроенную командную строку в отдельном командном процессе, запущенном в фоновом режиме.

FOR with option /F фиксирует все, что написано для обработки STDOUT выполняемого командного процесса, и обрабатывает каждую строку. В этом случае FOR захватывает только одну строку, содержащую только число. Поэтому никаких дополнительных параметров не требуется для присвоения номера, присвоенного переменной цикла с I помощью FOR, переменной среды _count с помощью команды SET .

Целью этого командного файла является подсчет количества cmd.exe уже запущенных процессов. Поскольку командная строка с TASKLIST и FIND выполняется FOR в фоновом режиме с использованием еще одного cmd.exe процесса, необходимо вычесть счет на единицу, чтобы получить правильный результат, используя арифметическое выражение, вычисленное с помощью SET /A _count-=1 . Это уменьшение на единицу нужно только для правильного подсчета количества cmd.exe процессов. Для любого другого процесса в этом нет необходимости.

Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните в нем следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.

  • echo /?
  • find /?
  • for /?
  • if /?
  • set /?
  • tasklist /?

Справка по командам и параметрам bat-файла. for

Введение

Мы все любим писать серьезные вещи на серьезных языках. Шаблоны, 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. За подробной информацией по различиям в реализации той или иной команды обращайтесь к .

Как обработать текстовый файл?

Иногда в командном файле необходимо получить доступ к содержимому некоторого текстового файла и некоторым образом это содержимое обработать. Например, прочитать файл настроек программы.

Для привнесения еще большей конкретики в процесс изучения зададимся целью прочитать файл с настройками следующего содержания:

      # Это простой файл с настройками

      # Режим сборки
buildmode=release

# Компилятор
compiler=cl.exe

# Архитектура
arch=x86

Ничего сверхъестественного – простой key=value формат с возможностью вставки Unix-style комментариев. Помочь в чтении и обработке этого файла нам сможет команда for. Ее дополнительные опции позволяют задать и разделители, и символ начала комментария, и кое-что еще. Вот командный файл, который выполняет поставленную задачу:

      @echo off

rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл. Если не удалось распарсить настройки -
rem выходим с ненулевым кодом возврата.
call :read_settings %~dp0\settings.txt || exit /b 1

rem Прочитанные настройки:
echoBuild mode  : %BUILDMODE%echoCompiler    : %COMPILER%
echoArchitecture: %ARCH%
rem Выход из сценария. Дальше - только функции.
exit /b 0

remrem Функция для чтения настроек из файла.
rem Вход:
rem       %1           - Имя файла с настройками
:read_settings

set SETTINGSFILE=%1

rem Проверка существования файла
if not exist %SETTINGSFILE% (
    echoFAIL: Файл с настройками отсутствуетexit /b 1
)

rem Обработка файла c настройками
rem Здесь:
rem     eol=# указывает на то, что содержимое строки начиная с символа #
rem     и до ее конца может быть пропущено как комментарий.
remrem     delims== указывает, что разделителем значений является символ =
remrem     tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый
rem     токен, а в %%j - второй.
remfor /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
    rem В переменной i - ключ
rem В переменной j - значение
rem Мы транслируем это в переменные окружения
set %%i=%%j
)

exit /b 0

Обильные комментарии должны помочь легко разобраться, что к чему. За подробностями, как обычно, отошлю к:

Кстати, возможности команды for не ограничиваются чтением из файла. Возможно также чтение вывода другой команды. Например, так:

      @echo off

for /f "tokens=* usebackq" %%i in (`cmd.exe /c ver`) do (
    set VERSION=%%i
)

echo%VERSION%

Особенно меня умиляет наличие опции “usebackq”, которая делает синтаксис отдаленно похожим на юниксовый. И в стенах царства Билла есть граждане, скучающие по /bin/sh и пытающиеся хоть как-то скрасить существование свое и окружающих. Следующий совет это также косвенно подтверждает.

Встроенные команды

1. @echo – это команда bat-файлов, которая позволит увидеть работу скрипта в командной строке. Она используется для просмотра хода выполнения рабочего кода. Если у пакетного файла возникают какие-либо проблемы, то данная команда позволит быстро локализировать проблемы. Добавление off дает возможность быстро завершить выполнение кода, избегая вывода ненужной информации на экран.

2. Title предоставляет те же возможности, что и тег в HTML, т. е. создает заголовок для пакетного скрипта в окне командной строки.

3. Call вызывает один bat-файл из другого или подпрограмму внутри одного сценария. Например, функция power вычисляет степень %2 числа %1:

if %counter% gtr 1 (

endlocal & set result=%prod%

4. Cls очищает командную строку. Используется для того, чтобы предыдущий вывод постороннего кода на помешал просмотру хода выполнения текущего скрипта.

5. Color задает цвет шрифта и фона. Например, команда color f9 задает белые буквы на синем фоне. Команда без параметра восстанавливает установки по умолчанию.

6. Echo служит для вывода информации, а также включения (echo on) или выключения (echo off) такого вывода. Например, команда echo. выводит новую строку без точки, а echo . – точку. Без параметров команда выводит на экран информацию о своем текущем статусе – echo on или echo off.

7. Rem обеспечивает ту же функциональность, что и тег > (сдвиг вправо). Логическим оператором отрицания является ! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0.=, >>=, >, >=; ,

Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.

Как создать «батник» в операционной системе Windows 7

Сделать этот файлик может любой пользователь на компьютере, который имеет достаточно прав для создания и сохранения файлов. На счет выполнения немного сложнее — выполнение «батника» должно быть разрешено как и отдельно взятому пользователю, так и операционной системе в целом (запрет иногда накладывается в целях безопасности, ведь исполняемые файлы не всегда создаются для благих дел).

Способ 1: использование расширенного текстового редактора Notepad++

Программа Notepad++ является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.

  1. Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись «Создать», в выпавшем сбоку окошке щелчком левой кнопки мыши выберите «Текстовый документ»

На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник. После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт «Edit with Notepad++». Созданный нами файл откроется в расширенном редакторе.

Очень важна роль кодировки, в которой будет исполнена команда. По умолчанию используется кодировка ANSI, которую нужно заменить на OEM 866. В шапке программы нажимаем на кнопку «Кодировки», нажимаем на аналогичную кнопку в выпавшем меню, затем выбираем пункт «Кириллица» и нажимаем на «OEM 866». Как подтверждение смены кодировки справа внизу в окне появится соответствующая запись.

Тот код, который вы уже нашли в интернете или написали сами для выполнения определенной задачи, необходимо просто скопировать и вставить в сам документ. На примере ниже будет использована элементарная команда:

После запуска этот батник перезагрузит компьютер. Сама команда означает запуск перезагрузки, а цифры 00 — задержку ее выполнения в секундах (в данном случае она отсутствует, то есть перезапуск выполнится незамедлительно).

Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт «Файл», затем нажмите на «Сохранить как».

Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт «Batch file».

К уже заданному ранее слову или фразе без пробела допишется «.BAT», и получится так, как на скриншоте ниже.

После нажатия на кнопку «OK» в предыдущем окне, на рабочем столе появится новый файл, который будет выглядеть как белый прямоугольник с двумя шестеренками.

Способ 2: использование стандартного текстового редактора Блокнот

Он обладает элементарными настройками, которых вполне хватает для создания самых простых «батников». Инструкция абсолютно аналогична предыдущему способу, программы лишь немного отличаются в интерфейсе.

  1. На рабочем столе двойным щелчком откройте ранее созданный текстовый документ — от откроется в стандартном редакторе.

Команду, которую использовали ранее, скопируйте и вставьте в пустое поле редактора.

В окошке редактора слева вверху нажмите на кнопку «Файл» — «Сохранить как…». Откроется окно Проводника, в котором необходимо указать место сохранения конечно файла. Здесь отсутствует способ задания необходимого расширения с помощью пункта в выпадающем меню, поэтому просто нужно дописать к названию «.BAT» без кавычек, чтобы получилось так, как на скриншоте ниже.

Оба редактора отлично справляются с созданием батников. Стандартный блокнот больше подходит для простых кодов, в которых используются несложные одноуровневые команды. Для более серьезной автоматизации процессов на компьютере необходимы продвинутые батники, которые с легкостью создаются расширенным редактором Notepad++.

Рекомендуется запускать файл .BAT от имени администратора, чтобы не возникало проблем с уровнями доступа к определенным операциям или документам. Количество задаваемых параметров зависит от сложности и назначения задачи, которую необходимо автоматизировать.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Как создать пакетный файл BAT для выполнения в командной строке CMD

Batch (.bat) файл — это инструмент, который сэкономит вам не один десяток часов рабочего времени. Узнайте сейчас как использовать пакетный файл на практике.

Пакетный (BAT, batch) файл представляет собой инструмент, с которым сталкивался практически каждый пользователь Windows. Документ помогает выполнить ряд действий буквально парой кликов, а их список ограничивается лишь силой воображения и кодовым функционалом. Давайте разберем инструмент подробнее.

Что такое BAT файл?

Вы, должно быть, уже в курсе о существовании такой утилиты как “Командная строка” Windows, или CMD.

Она работает путем ввода команд в качестве входных данных и обрабатывает их, проводя нужные операции с компьютером.

Тем не менее, несмотря на всю полезность инструмента, командная строка устраивает далеко не всех. Сложность утилиты и высокий порог вхождения делают ее “последним средством спасения Windows”.

Доступные форматы BAT файла:

Вне зависимости от того какой формат выбран при создании документа, функции от этого не изменятся.

В чем польза bat файла?

Автоматизация. Если раньше вам приходилось долго и нудно “вбивать” сложные коды в окно командной строки, пришло время расслабиться! BAT файл экономит время пользователя не только при работе с CMD, но и при взаимодействии с другими системами ПК.

Например, вы можете запланировать выключение компьютера через определенный промежуток времени. Этот способ применения пакетного файла хорошо подойдет геймерам, ставящим установку игру на ночь.

Запланируйте отключение системы к моменту завершения установки и не опасайтесь за перерасход электроэнергии.

Если же вы разработчик программного обеспечения, обратите внимание на возможность автоматизации при установке вашего приложения. Таким образом повысится не только удобство для конечного пользователя, но популярность вашего софта

При создании BAT файла используется петля (for), условный оператор (if) и оператор управления (goto). Документ запускается либо с помощью командной строки, либо с помощью другого пакетного файла при использовании команды CALL.

Режимы BAT файла

Несмотря на то, что пакетный файл по умолчанию выполняет работу автоматически, вы можете настроить его так, что при выполнении конкретной операции он будет запрашивать подтверждение. Например, при вводе команды на отключение службы Windows, BAT файл спросит вас, уверены ли вы в своем решении. Этот режим называется интерактивным (interactive).

Другой режим называется пакетным (batch mode). Он работает в классическом стиле и самостоятельно выполняет запрограммированные функции.

Режимы пакетного файла:

  • Интерактивный.Полуавтоматический режим. Программа может запрашивать подтверждение операций.
  • Пакетный.Полная автоматизация работы.

Используйте разные режимы в зависимости от ситуации.

Как запустить BAT файл в Windows 10?

Основной способ запуска пакетного файла — двойной щелчок по его иконке. Тем не менее, вы можете его и открыть и другим методом — с помощью командной строки.

Чтобы открыть BAT файл с помощью командной строки, выполните следующее:

  • Откройте директорию в которой лежит пакетный файл.
  • Определите название файла.
  • Откройте командную строку.
  • Введите название документа с его расширением.Например: HelloWorld.bat

Способ запуска через командную строку приобретает ценность с ростом количества пакетных файлов. Если вы помните название и расширение нужного документа, вы откроете его даже когда забыли точную директорию.

Как создать BAT файл?

Эта тема разбита на 2 раздела, каждый из которых — ключевой при создании пакетного документа. Не зная основ и команд, нужных для формирования структуры, автоматизировать процесс работы невозможно.

Основы создания BAT файлов

Вы не сможете создать пакетный файл без изучения базовых команд. Каким бы он не был полезным и не помогал автоматизировать работу на ПК, непонимание основ станет серьезным препятствием. В этом разделе мы рассмотрим 5 базовых команд, которые вас в курс дела.

Базовые команды:

titleИспользуется для создания заголовка. Отображается в верхней части окна командной строки.

echoРежим вывода команд на экран. При включении, командная строка выведет на экран сообщение о совершенном действии. При отключении, соответственно, сообщения пропадут

Обратите внимание, что вам придется контролировать статус echo. Если команда активирована на строке 2 и вы решили отключить ее на строке 22, 20 промежуточных строк будут содержать включенный режим вывода команд.

pauseИспользуется для остановки процесса.

exitПозволяет закрыть командную строку.

clsИспользуется для очистки окна командной строки.
::

Цикл в командной строке for /l

Всем привет. Подскажите, как можно сделать цикл что бы передавал по очередно файлы для aerender.exe ? Вот тут примеры есть https://helpx.adobe.com/ru/after-effects/using/automated-rendering-network-rendering.html

Пытаюсь написать вот так

Но ничего не запускается даже. Командная строка открыта в директории c:Program FilesAdobeAdobe After Effects CC 2021Support Files и два файла проекта лежат там же 1.aep и 2.aep . Если так вообще можно сделать, позже хотел бы сделать. что бы файлы проекта искал не там же а в другой директории? И хотел бы написать батник что бы не лазить постоянно в директорию с aerender.exe, что то типо Вот такого

Да, я понимаю, что это не правильно, подскажите как правильно написать ?

Разделители полей

Причина вышеописанной особенности заключается в специальной переменной окружения, которая называется

(Internal Field Separator) и позволяет указывать разделители полей. По умолчанию оболочка bash считает разделителями полей следующие символы:

  • Пробел
  • Знак табуляции
  • Знак перевода строки

Если bash встречает в данных любой из этих символов, он считает, что перед ним — следующее самостоятельное значение списка.

Для того, чтобы решить проблему, можно временно изменить переменную среды IFS. Вот как это сделать в bash-скрипте, если исходить из предположения, что в качестве разделителя полей нужен только перевод строки:

После добавления этой команды в bash-скрипт, он будет работать как надо, игнорируя пробелы и знаки табуляции, считая разделителями полей лишь символы перевода строки.

Массовая обработка файлов. Команда for

Команда for позволяет организовать выполнение повторяющихся однотипных действий. Можно
использовать ее для того, чтобы вывести на экран числа от одного до десяти, как показано на
следующем листинге.

for /l %%i in (1,1,10) do echo %%i

Переменная i называется счетчиком цикла. В силу своеобразия синтаксиса
команды for, имя счетчика цикла должно состоять из одной буквы. Причем, если
мы пишем командный файл, то перед именем счетчика цикла надо поставить сдвоенный знак
процента, если же мы просто набираем команду в командной строке, то одиночный.

Логика работы этой команды такова. После слова in указан диапазон изменения
счетчика цикла. В данном варианте команды это тройка чисел: начальное значение счетчика, шаг
счета, предельное значение счетчика. При выполнении команды командный процессор сначала
присвоит переменной i значение 1, а потом на каждом шаге
цикла будет увеличивать его на 1, пока оно не превысит 10.
Очевидно, таких шагов получится десять. Если бы в качестве шага счета мы указали число
2, то цикл выполнился бы пять раз. На каждом шаге цикла выполняется тело
цикла, написанное после слова do. В приведенном примере это команда echo,
которая выводит на экран текущее значение счетчика цикла.

Наверно можно придумать ситуацию, когда что-то подобное на самом деле требуется, но обычно
команда for используется для перебора и обработки файлов. Надо сказать, что в
достаточно простых случаях массовая обработка файлов выполняется с помощью подстановочных
символов. Если, мы хотим всем файлам в текущем каталоге заменить расширение
.htm на .html, мы вводим команду ren *.htm
*.html. Но если то же самое надо сделать не в одном каталоге, а в дереве каталогов,
то без команды for не обойтись. Приведенный ниже командный файл выполняет эту операцию для
всех htm-файлов в подкаталоге website текущего каталога. Точнее, во всем дереве каталогов,
которое находится внутри website.

for /r website %%i in (*.htm) do ren %%i %%~ni.html

Ключ /r указывает на необходимость обхода каталога website и
всех его внутренностей. Если его не указать (но тогда и каталог указывать не разрешается), то
обработаны будут только файлы в текущем каталоге. Диапазоном значений счетчика цикла в данном
варианте команды является множество всех файлов с расширением .htm,
находящихся внутри каталога (точнее, дерева) website. Странная на первый
взгляд запись ~ni означает, что из значения переменной i
требуется выделить только имя файла. В языке команд MS-DOS предусмотрено несколько таких
модификаторов, например, запись ~хi обозначает расширение файла. Все
модификаторы описаны в справке по команде for.

Тело цикла может состоять из нескольких команд, заключенных в скобки.

@echo off
for /r website %%i in (*.htm) do (
   rem Выводим имя файла
   echo %%i
   rem Переименовываем файл
   ren %%i %%~ni.html
)

Параметры

{%переменная|%%переменная}
Обязательный параметр. Замещаемый параметр. Используйте %переменная для
выполнения команды for из командной строки. Используйте %%переменная
для выполнения команды for в пакетном файле. Переменные учитывают регистр и могут
быть представлены со значением альфа, например, %A, %B или %C.
(множество)
Обязательный параметр. Задает один или несколько файлов, каталогов, диапазон значений или
текстовых строк, подлежащих обработке заданной командой. Скобки являются обязательными.
команда
Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога
диапазона значений или текстовой строки, включенной в указанный параметр
(множество).
ПараметрыКоманднойСтроки
Задает параметры командной строки, которые используются с указанной командой.
/?
Отображение справки в командной строке.

Урок 6 по cmd — обзор цикла for командной строки |

В этой статье мы рассмотрим использование цикла for в командной строке, который, в отличии от аналогичных конструкций в других языках программирования, тут носит немного другой характер. Сперва, немного лирики…

В былые времена программирование носило совсем другие цели нежели теперь. Это теперь царит разнообразие различных языков: хочешь, пиши на php, хочешь, постигай вершины Delphi, в общем, все в изобилии и на любой вкус. Столь стремительный рост возможностей и средств для программирования затронул структуру и характер новых языков. Так, когда я еще проходил в школе на уроках информатики язык Pascal, то цикл использовался в основном для выполнения групповых математических задач: нахождение суммы чисел n-количества и групповое умножение. Теперь, ситуация немного другая, ведь помимо простой математики приходится работать с файлами, папками, объектами и коллекциями. И тут рождаются новые разновидности цикла:

В командной строке цикл един, но с помощью ключей можно менять структуру его применения: работа с файлами, с каталогами, банальный перебор значений или текстовых строк.

В этой статье мы рассмотрим общую структуру цикла командной строки, так сказать – сделаем краткий обзор. По ходу материала я буду давать ссылки на остальные статьи с описанием, уже узких примеров применения, и так, начнем…

Основной синтаксис применения следующий:

for итератор do (оператор)

Итератор – отвечает за ход выполнения. Тут определяется и условия и количество выполнения заданных операторов. Тут могут находиться как одна, так и несколько команд, которые можно объединить в одну цепочку, конвейер или группу (внутри скобок). Как и в стальных языках программировать, итератор содержит переменную инициализации (начальное значение), или же набор различных элементов – диапазон значений, группа файлов или папок.

На переменные инициализации распространяются следующие правила:

  • Они существуют только в теле цикла командной строки
  • В качестве имени нельзя использовать слово, например, myVar, а только латинские буквы в диапазоне от а до z или от А до Z, например %%А, %%В или %%С. Если вы используете цикл не в сценарии, а в окне консоли, то ставится только один символ %.
  • Названия переменных итератора чувствительны к регистру символов, то есть, %%a и %%A будут отличаться.

Как я уже сказал, цикл в командной строке может изменять логику работы с помощью ключей, а именно:

for/D %%имя_переменной in (набор_каталогов) do оператор – как вы уже догадались, данный синтаксис применяется для групповой работы с каталогами. Об этом свидетельствует ключ /D (directory). Как и в случае с файлами, тут можно указывать шаблонный формат или список.

for /R %%имя_переменной in (набор_файлов) do оператор – данный синтаксис используется для групповой работы с подкаталоги, о чем говорит параметр /R. С его помощью можно задать путь к папке, а потом задать список и шаблон для файлов, в результате, мы можем обработать все документы заданного типа в заданном диске или папке.

Примеры работы с корневыми и вложенными папками рассмотрены в статье «Урок 8 по CMD«

for /L %%имя_переменной in (начало, шаг, конец) do оператор – отвечает за перебор значений. Параметры в круглых скобках задают начальное значение, шаг (может быть как положительным, так и отрицательным) и конечное значение.

for /F %%имя_переменной in (источник) do оператор – анализ текстовых файлов, строк и вывод команд. Данный синтаксис позволяет анализировать как содержимое файла, так и заданный текст. Плюс, можно задать параметры для анализа, например, число обрабатываемых строк, разделители и комментарии.

Примеры обработки текстовых строк рассмотрены в статье «Урок 9 по CMD«

for %%имя_переменной in (набор_файлов) do оператор – данный синтаксис применяется для групповой работы с файлами. Тут %%имя_переменной является переменной инициализации, которой будет присваиваться значение, заданное в “набор_файлов”, например, путь к заданному файлу. Так, набор_файлов может быть одной строкой определяющей группу документов по шаблону, или списком строк, разделенных пробелами.

Примеры работы с файлами и данными рассмотрены в статье «Урок 7 по CMD«

Спасибо за внимание. Автор блога

5- Переменные среды Windows

Windows позволяет вам создать переменные среды, данные переменные будут глобальными переменными, которые можно использовать в любых файлах batch.

В Windows выберите:

Здесь вы можете создать переменную среды для текущего user, или переменную среды системы (system environment variable), который можно использовать любым user.

Например, я создаю переменную среды с названием MY_ENVIRONMENT_VARIABLE и значением “My Environment Variable Value!”.

И можно использовать только что созданную переменную среду в файле batch.

testEnvVariable.bat

@echo off

echo %MY_ENVIRONMENT_VARIABLE%

pause

Операторы перехода

Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Приведем пример.

Пусть имеется командный файл следующего содержания:

После того, как в этом файле мы доходим до команды

его выполнение продолжается со строки

В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).

Также для перехода к метке внутри текущего командного файла кроме команды GOTO можно использовать и рассмотренную выше команду CALL:

При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. Например, если запустить с параметром «Копия-1» командный файл следующего содержания:

то на экран выведутся три строки:

Таким образом, подобное использование команды CALL очень похоже на обычный вызов подпрограмм (процедур) в алгоритмических языках программирования.

Как экранировать символ?

В командном языке Windows существует некоторый набор символов с высоким приоритетом, которые всегда трактуются как спецсимволы. К ним, в частности, относятся:

  • Операторы перенаправления ввода-вывода <, >, >>.
  • Оператор конвейера |.
  • Операторы объединения команд ||, & и &&.
  • Оператор разыменования переменной %…%.

В случае если символ, относящийся к одному из таких операторов, должен быть включен в вашу команду в его литеральном смысле, вас ждут определенные неожиданности. Например, при выполнении вот такой строки

      echo
      The ratio should be up to 10%.
    

символ процента будет «съеден» интерпретатором, который решит, что это попытка вывода значения какой-то переменной. В случае со знаком процента решение довольно хорошо известно и состоит в удвоении этого символа:

      echo
       The ratio should be up to 10%%.
    

после чего все заработает так, как надо. Однако в других случаях все менее очевидно. Рассмотрим командный сценарий, который генерирует незатейливый HTML-файл:

      @echo
      
      off
      
      set OUTPUTFILE=%1

echo<html>                                  >%OUTPUTFILE%
echo<head>                                 >>%OUTPUTFILE%
echo<title>This is a greeting page</title> >>%OUTPUTFILE%
echo</head>                                >>%OUTPUTFILE%
echo<body>                                 >>%OUTPUTFILE%
echoHello World!                           >>%OUTPUTFILE%
echo</body>                                >>%OUTPUTFILE%
echo</html>                                >>%OUTPUTFILE%

К сожалению, при попытке запуска этого «чуда инженерного разума» нас постигнет неудача в виде сообщения об ошибке

> was unexpected at this time.. Не очень эстетично, зато дешево и практично. Слово «надежно» я пропустил умышленно…

Как получить короткое (8.3) имя файла?

«А зачем? – спросите вы – Ведь мы живем в мире Интернета, Web-сервисов и NTFS с длинными именами файлов». Это действительно так, но иногда встречаются программы, которые отчаянно сопротивляются прогрессу, и в частности, не любят имен файлов и полных путей с пробелами. Одной из таких программ, кстати, является утилита build.exe из Windows DDK… В таких ситуациях спасает использование короткого, «беспробельного» DOS-имени для файла.

ПРЕДУПРЕЖДЕНИЕ

Доступ к файлу по короткому имени может быть не всегда возможен. На файловой системе NTFS создание коротких псевдонимов для файлов может быть отключено путем установки в единицу значения «NtfsDisable8dot3NameCreation» в ключе реестра «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem».

Итак, все же (в предположении, что надругательства над NTFS не было) – как? Внимательный читатель должен был заметить в предыдущем разделе, что при обращении к переменным %0 — %9 можно использовать префикс

%~s1        - expanded path contains short names only

который нам как раз мог бы помочь.> "%PROGRAMFILESSHORT%"

Этот и другие модификаторы можно использовать и с любой другой формой цикла for, подробнее о которых можно узнать из:

Как создать BAT файл в Windows 7, 10

Этой записью мы продолжаем серию материалов о командной строке. В данной записи вы узнаете о том, как создать BAT файлик и как его использовать.

Что представляет из себя BAT файл

BAT файл (также известный как пакетный файл или батник) это текстовый документ с расширением . BAT в котором записаны команды, которые надо выполнить при помощи командной строки. При запуске такого файла запускается программа CMD, которая считывает команды с этого файла и последовательно выполняет их.

При помощи BAT файлов можно автоматизировать многие процессы. К примеру, при помощи BAT файла можно выполнять запуск прог, резервное копирование файлов, архивацию данных и многое другое.

Создание BAT файла

Создать BAT файлик очень просто. Для этого достаточно запустить любой простой текстовый редактор, к примеру «Блокнот», ввести команды и сохранить с расширением BAT.

Все после этого в папке, которую мы указали при сохранении файла, появится BAT файл. Чтобы запустить его достаточно дважды кликнуть по нему мышью.

Обращаю ваше внимание, что при сохранении bat файла в поле Тип файла следует указать «все файлы». А то может сохраниться как обычный текстовый документ.

Ещё вы можете запустить выполнение BAT файлик из командной строки. Для этого достаточно ввести его адрес.

Если вы хотите продолжить редактирования BAT файла, к примеру, добавить в него новые команды, для этого надо снова открыть BAT файлик при помощи текстового редактора. Это удобно делать при помощи контекстного меню.

Щёлкните правой клавишей мышки по BAT файлу и выберите пункт «Изменить». После чего запустится редактор Блокнот, в котором вы сможете отредактировать ваш BAT файл.

Видео о том, как создать файл с расширением bat

 

Пакетные команды и команды пакетного файла с одного взгляда

или изменения (доступ к файлам

900 04

Виста

приводы

.Это запускается с помощью CSCRICT

000 0009 9000 4

FC

8999999999999999009 . Виста

999999999999999999

9000 .9

9000 99959999999999009 9000 9. 999999999999999999999999999999999999999009 . 9000 999999999999999999999999999999999999999009 . Vista

9000 7, 9000 7, 9000 7, 10

7, 8, 10

.9. 9. -page на экране

XP Виста Mountvol 9 0004

Perfmon

9009 с этим

Законные регистра в реестр. , читать, импортировать или экспортировать

All All All Thangs After Are Are Craked В качестве комментариев на панели

-й XP Виста RSM 900 04

7, 8, 10

9000 7, 70008 9999999 70008

70008

8, 10

Команда Batch

Результат

Версии Windows,

доц

Показывает или изменяет Расширение файла (например, .txt или .jpg)

XP

Vista

7, 8, 10

AT

. Запускает программу команды или в определенное время; Затем вступил в «Запланированные задачи»

XP

Vista

7

Атриб

Отображения или атрибуты файла изменений (e..грамм. Размер модификации, дата модификации, местоположение хранилища)

XP

Vista

7, 8, 10

CACLS

Отображения или изменения Acls (Access REMSISS) для файлов

или изменения Acls (доступ к файлам

или изменения (доступ к файлам

или изменения (доступ к файлам

или изменения (доступ к файлам

или изменяют.

XP

Виста

7, 8, 10

вызова

извлекает пакетный файл в другой

XP

Виста

7 , 8, 10

кд

Переключение в другой каталог или другую папку

XP

Виста

7, 8, 10

CHCP

Отображает или изменяет текущую кодовую страницу, таблицу символов или карту символов

XP

7, 8, 10

ChDir

Изменяет каталог или отображение его имени

XP

Виста

7, 8, 10

CHKDSK

Проверяет носитель данных на наличие ошибок

XP

Виста

7, 8, 10

Chkntfs

Отображает или изменяет проверку передачи данных при запуске системы

XP

Vista

7, 8, 10

. Возможны диалоги выбора C/D, включая возвращаемое значение

шифр

дает возможность кодировать каталоги (в разделах NTFS-типа) или для отображения, лежащие в основе кодирующего

XP

Vista,

7, 8, 10

ЦБС

Удаляет все содержимое экрана

XP

Виста

7, 8, 10

CMD

Запускает подсказка

XP

Виста

7, 8, 10

cmstp

позволяет устанавливать профили в менеджере соединений

XP

Vista,

7, 8 , 10

цвет

Изменение цвета фона текущей панели 90 008

XP

Виста

7, 8, 10

комп

Сравнивает содержимое двух или более файлов

XP

Виста

7, 8, 10

компактные

Отображает или изменяет сжатие файлов в разделах NTFS типа

XP

Виста

7, 8, 10

конвертировано

Преобразует FAT в NTFS

XP

Виста

7, 8, 10

скопировать

дает возможность копирования файлы

XP

Vista

7, 8, 10

90 005 Cscript

Запускает интерпретатор VBScript / JScript

XP

Виста

7, 8, 10

даты

Дисплеи и адаптирует системную дату / время

XP

Вист

7, 8, 10

дефрагментация

позволяет дефрагментировать диски

XP

Вист

7, 8, 10

дель

Удаляет отдельные файлы

XP

Виста

7, 8, 10

реж

Отображает все содержимое каталога

XP

Vista

90 005 7, 8, 10

DISKCOMP

Сравнивает содержимое двух разных дисков

XP

Виста

7, 8, 10

DiskPart

позволяет администрировать операторов данных непосредственно на панели

XP

Vista

7, 8, 10

Dement

Dempor

9000

пакеты образов Windows могут быть перечислены, установлены, удалены, настроены или обновлены.

7, 8, 10

DOSKEY

Создает макросы, напоминает команды, введенные ранее, и редактирует ввод команды

XP

Виста

7, 8, 10

driverquery

Показывает драйвер для устройств, установленных на компьютере

XP

Виста

7, 8, 10

эхо

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

XP

Виста

7, 8, 10

endlocal

Завершает сеанс, начатый setlocal

X P

Виста

7, 8, 10

Стирание

Удаляет один или несколько файлов

XP

Виста

7, 8, 10

ERRORLEVEL

Показывает ли команда успешно или нет (0 означает, что да, не 1 ни в коем случае)

XP

Виста

7, 8, 10

EventCreate

Входит в журнал событий

XP

VISTA

7, 8, 10

XP

Eventtriggers

Основной или конфигурации

. существует

сУЩЕСТВУЕТ

Проверяет, является ли файл

XP

Vista,

7, 8, 10

выход

Закрывает пакетный файл или быстрое

XP

Виста

7, 8, 10

расширить

распаковывает сжатые файлы и папки

XP

Виста

7, 8, 10

Сравняет различные данные и отображает различия

XP

Vista

7, 8, 10

. Вводя символы

XP

Vista

7, 8, 10,

Findstr

Поиск строк в пределах файла, т. Д.грамм. В имени файла или в текстовом тексте

XP

Vista

7, 8, 10

для

Создает для () петля, которая для повторных заправочных команд. Внутри кронштейнов

XP

Vista

7, 8, 10

Формат

7, 8, 10

Fsutil

Отображает и конфигурирует свойства файловой системы

XP

Виста

7, 8, 10

ftp

Позволяет загружать и скачивать файлы через FTP (протокол передачи файлов), например.грамм. на сервер

XP

Vista

7, 8, 10

FTYPE

Дисплей

7, 8, 10

Getmac

Отображает MAC -адреса (идентификатор устройства) для сетевых адаптеров (локальный или дистанционный

7, 8, 10

GOTO

позволяет прыгать до определенной точки в рамках пакетного файла

Vista

Vista

9000

Vista

gpresult

Отображает рекомендации группы, которые используются на компьютере или для конкретного пользователя

XP

Виста

7, 8, 10

Gpupdate

позволяет руководящим принципам группы обновлений

XP

Виста

7, 8, 10

GRAFTABL

Отображение специальных символов в графическом режиме

XP

Виста

7, 8, 10

помощь

Отображение всех команд CMD внутри панели

XP

Виста

7, 8, 10

имя хоста

Показывает имя компьютера

XP

Vista

7, 8, 10

ic ACLS

позволяет отображать, изменять, защищать или получить ACLS и контроль доступа для файлов и каталогов

7, 8, 10 0008

If

, 8, 10 0008

If

, 8, 10 0008

If

, 8, 10 0008

.

позволяет интегрировать условия внутри пакетных файлов, так же, как с JavaScript, например

XP

Vista,

7, 8, 10

IPCONFIG

Настройки настройки IP сети

XP

Vista

7, 8, 10

IRFTP

. Vista

7, 8, 10

этикетка

900 05 Меняет обозначение носителя данных

XP

Виста

7, 8, 10

лесоруб

администрирует сервис «Журналы и оповещения производительности»

XP

Виста

7, 8, 10

LPR

позволяет отправлять задания на печать на принтер в сети

XP

MkDir

создает каталог

XP

Vista,

7, 8, 10

ММС

извлекает панель управления

XP

Vista

7, 8, 10

Режим

Конфигурирование системных интерфейсов и устройств

XP

Vista

7, 8, 10

Создает, удаляет или перечисляется точку монтирования для носителя данных

XP

Виста

7, 8, 10

двигаться

переименовывает или перемещает файлы или каталоги

XP

Виста

7, 8 , 10

openfiles

Позволяет отображать или разделять файлы или директорию IES, которые были открыты

7, 8, 10

MSIEXEC

Установки.MSI-пакеты (MSI-файлы также называют установщика Windows файлы пакета)

XP

Виста

7, 8, 10

нетто

администрирует и отображает сетевые услуги

XP

Виста

7, 8, 10

Netsh

Управление и настройка компонентов сети с помощью подсказки

XP

Виста

7, 8, 10

NetStat

соединений Отображение TCP-IP, и их статус

XP

Виста

7, 8, 10

nslookup

Запрашивает DNS-сервер

XP

 

NTBackup

Запуск NTBackup через CommandLine / начинается Бесшумный

XP

путь

Отображает или устанавливает Путь поиска для программы выбран

XP

Vista

7, 8, 10

Проверка подключения к выбранному IP -адресу

.

Виста

7, 8, 10

пауза

пакетный файл в настоящее время запуска останавливается и панель обеспечивает сообщение «Нажмите любую клавишу»

XP

Виста

7, 8, 10

Запускает монитор производительности для Windows

XP

Vista

7, 8, 10

Ping

Ping

XP

Виста

7, 8, 10

печать

печатает текст на основе файла

XP

Виста

7, 8, 10

prncnfg

После запуска CScript, информация о конфигурации для принтера могут быть отображены или изменены

XP

prndrvr

После запуска cscript драйверы принтера могут быть удалены Айед, добавлены или удалены

XP

prnjobs

После запуска CScript задания на печать в очереди могут отображаться, остановить или повторен

XP

PRNMNGR

После начала CSCRICT, принтеры или принтеры могут быть добавлены или стандартный принтер.

prnport

После запуска cscript можно создавать, удалять или перечислять порты принтеров.

XP

проворная

Изменяет подсказку (например, «Доброе утро!» Вместо «Нажмите любую клавишу»)

XP

Виста

7, 8, 10

удаляет каталог

8, 10

восстановить

позволяет извлекать читаемые файлы из поврежденного оператора данных

XP

Vista

7, 8, 10

Рег

XP

Vista

7, 8, 10 900 08

regsvr32

.Файлы DLL и .ocx и библиотеки программ могут быть зарегистрированы в реестре

XP

Vista

7, 8, 10

Rem

XP

Vista

7, 8, 10

rename

.

Виста

7, 8, 10

заменить

файлы могут быть заменены или переписаны с этой командой

XP

Vista,

7, 8, 10

сброс сеанса

Сеансы можно разделить с помощью сброса

XP

Виста

7, 8, 10

RmDir

Удаляет каталог

XP

Виста

7, 8, 10

удаляет каталог

7, 8, 10

Съемные носители (е.грамм. CD-ROMS) можно администрировать или управлять

XP

Schtasks

Запланированные TASKS на текущем или резиновом компьютере.

XP

Vista

7, 8, 10

Secedit

. XP

Виста

7, 8, 10

набор

позволяет читать и удалять переменные внутри оперативного

XP

Виста

7, 8, 10

выключение

Компьютер может быть зарегистрирован Ed Out, перезапущенный или отключен

XP

Vista

7, 8, 10

Сорт

Сортирует ток с током.

XP

Vista

7, 8, 10

СТАРЬ

Некоторые Window

7, 8, 10

subst

С помощью этой команды можно указать путь к метке диска (т.грамм. «C:»)

XP

Vista

7, 8, 10

SystemInfo

Информация о системе конфигурации компьютера. XP

Виста

7, 8, 10

Taskkill

Используется немедленно закрыть активные процессы

XP

Виста

7, 8, 10

TaskList

извлекает все активные задачи и процессы

XP

Виста

7, 8, 10

tcmsetup

телефон клиент может быть установлен с этим

XP

Vista

телнета

Telnet соединение может быть установлено с этим

XP

TFTP

С TFTP, файлы на сервере TFTP могут быть переданы

XP

время в

Устанавливает или отображает систему

XP

Виста

7, 8, 10

Тайм -аут

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

Vista

70009

Vista

Vista

9000 9000 4000 7,

.

заголовок

Заголовок окна подсказки может быть blished с этим

XP

Виста

7, 8, 10

дерево

Графическое отображение структуры файла

XP

Виста

7, 8, 10

Тип

содержание текстовых файлов могут отображаться с этим

XP

Виста

7, 8, 10

вер

текущая версия операционной системы могут быть отображены

XP

Vista,

7, 8, 10

проверить

Проверяет правильно ли файлы записаны на носитель данных

XP

Vista 9000 8

7, 8, 10

VOL

Метка и серийный номер носителя данных могут быть отображены с этим

XP

Vista

9

пакетный файл Учебник => Пакетные команды и их эквиваленты Bash

bitsadmin . % переменной% «==» значение»( IPCONFIG Ifconfig мкр MkDir mklink более 90 004 Перемещает файл или файлы с исходного пути на целевой
команда /? Команда людей Показывает помощь для команды
Wget или завитка Загрузок удаленного файла
Certutil -hashfile имя_файл MD5 md5sum имя_файла Возвращает контрольную сумму MD5 имя_файла
кд PWD Отображение текущего каталога
каталог CD каталог CD Изменения текущий каталог на указанный один
ЦБС четкие очищает экран
копия сП Копирует файл или файлы из исходного пути к цели путь
дата Дата Отображает дату или устанавливает ее на основе ввода пользователя
DEL RM Удаление файла или файл
974764747474747474764764764764764764764764764764764764764764764764764764764764764764764764764764769н. отображает список файлов и каталогов в текущем каталоге
эхо эхо отображает текст на экране
выхода возврата Выход из сценария или подпрограммы
выход выход закрывает в командной строке или терминал
FC дифференциала Сравнивает содержимое двух файлов
находка "строка" имя_файла grep "строка" имя_файла Поиски 926 55 file_name для строки
Findstr "String" file_name GREP "Строка" file_name Поиск File_Nam *) сделать что-нибудь для элемента в наборе файлов*; делать; что-нибудь; done Сделать что-то для каждого файла в наборе файлов
for /F %A in ('command') сделать что-то `command` Возвращает вывод команды 90
для /L %A in (first,increment,last) сделайте что-нибудь для элемента в `seq first increment last`; делать; что-нибудь; Готово запускается в первой и отсчет на . Приращение , пока он не достигнет Последний
FORFILES Найти 8 , если [ "переменная"= "значение"], а затем Сравнивает два значения
отображает информацию IP-
Создает новые папки
пер -s Создает символическую ссылку больше
Отображает один экран вывода за раз
перемещение mv
pause read -p "Нажмите любую клавишу для продолжения" Приостанавливает выполнение скрипта, пока пользователь не нажмет кнопку 9 2 POPD сдвига сдвига
POPD Удаляет верхнюю запись из стека каталогов и переходит в новый Top Directory
Pushd Pushd Adds Adds Adds Adds Adds Adds Addss Addss Addss Addss Addss Addss Addss Addss Addss Adds. Новый Top Directory
REN MV . rmdir Удаляет пустые каталоги
rd /s RM -RF Удаляет каталоги независимо от того, были ли они пустыми
Установить переменную = значение Variable = Значение Укладывает значение 5. set /a переменная = уравнение Переменная = $ ((уравнение)) . -p чтения «promptstring» переменной Получает ввод пользователя и сохраняет его в переменной
сдвиг аргументов на 1 (или п если это предусмотрено)
рода sort Сортировка вывода по строкам в алфавитном порядке
список задач ps 900 09 Показывает список запущенных процессов
Taskkill / PID ProcessID убийство ProcessId Убивает процесс с PID ProcessId
Время / т Дата Отображает текущее время
Тип кошка Показывает содержимое файла
, где , который Отыскивает текущий каталог и путь к файлу или команды
whoami id Отображает имя и группу текущего пользователя

Пакетные команды MS-DOS

Пакетные команды MS-DOS

Пакетные команды MS-DOS

Кнопка Opus или функция горячей клавиши могут быть установлены на MS-DOS Batch Режим функции .Функция в этом режиме запускается так, как будто это .bat пакетный файл, и он может использовать команды MS-DOS, ветвление и логические инструкции, а также запускать внешние программы, предназначенные только для запускаться из командной строки.

     

На приведенном выше снимке экрана показан пример простой пакетной функции MS-DOS. Этот использует инструкцию MS-DOS dir для создания списка каталогов текущей исходной папки. Использование перенаправления > символ, список каталогов будет сохранен в файле по пути назначения названный в честь текущей исходной папки.

 

Разрушение функции,

  • Тип установлен на Пакетная функция MS-DOS с помощью Функция раскрывающийся список. Это необходимо для использования dir инструкция — dir не настоящая программа или команда, это инструкция, которая понимается только командой MS-DOS устный переводчик.
  • Первая строка команды, cd {sourcepath} , устанавливает текущий каталог пакетного сценария в текущую исходную папку.Это папка, в которой dir создаст список.
  • Вторая команда вызывает инструкцию dir (флаг /w включает режим wide ). Символ > перенаправляет вывод команды, а сочетание внешних управляющие коды, следующие за > , обеспечивают вывод имя файла.
    • {destpath} — путь текущего пункта назначения каталог
    • {sourcepath|nopath|noterm} — текущий источник каталог без пути или конечного завершения (т.е. имя каталог)
    • .txt — расширение выходного файла.

 

Когда вы запускаете пакетную функцию MS-DOS, Opus фактически создает временную пакетный файл на диске и записывает в него ваши инструкции перед его вызовом. Если вы должны были посмотреть на пакетный файл, созданный вышеуказанной функцией, вы бы увидели что-то вроде следующего:

 

 @echo off 
chcp 1252 > nul
C:
cd "\Users\Jon\Documents"
dir /w > "C:\Test\Documents.текст"


Эти инструкции автоматически записываются в .bat файл на основе параметров и определения функции.

  • @echo off — стандартная инструкция MS-DOS, предотвращающая каждая команда не будет отображаться в окне подсказки при запуске пакетного файла
  • chcp 1252 > nul инициализирует кодовую страницу командная строка (1252 — стандартная кодовая страница Windows).
  • C: устанавливает текущий диск командной строки — это генерируется автоматически из инструкции cd {sourcepath} в определении команды.
  • cd «\Users\Jon\Documents» устанавливает текущий каталог на текущий диск — опять же, он генерируется автоматически из компакт-диска {sourcepath} инструкция.
  • dir /w > «C:\Test\Documents.txt» отвечает за создание фактического списка каталогов.В этом случае исходная папка назывался Documents , а папка назначения была C:\Test — поэтому имя выходного файла, сгенерированного {destpath}{sourcepath|nopath|noterm}.txt был C:\Test\Documents.txt .

 

Несколько команд модификаторы относятся конкретно к пакетным функциям MS-DOS:

  • @leavedoswindowopen можно использовать для форсирования приглашения DOS окно, чтобы оставаться открытым после завершения функции (позволяя вам видеть любые выходные данные или сообщения об ошибках).
  • @codepage можно использовать для изменения кодовой страницы DOS. приглашение по умолчанию 1252 .
  • @nocall используется для вызова пакетного файла без возврата управление родительской функцией.
  • @runbatch и @norunbatch контролировать, как внешние программы и внутренние команды взаимодействуют в пакетной функции MS-DOS
  • @runmode:hide можно использовать для предотвращения кратковременного мигания окно подсказки DOS.

 

См. команду ссылка на модификатор для полного описания модификаторов команды.

 

 

 

 

Сводка команд, связанных с пакетом | Центр суперкомпьютеров Огайо

В этом разделе представлены две группы команд, связанных с пакетной обработкой: команды, которые выполняются на узлах входа в систему для управления вашими заданиями, и команды, которые выполняются только внутри пакетного сценария. Здесь описаны только самые распространенные варианты.

Многие из этих команд более подробно обсуждаются в других разделах этого документа. У всех есть онлайн-страницы руководств (пример: man sbatch ), если не указано иное.

При описании использования команд мы используем квадратные скобки [как здесь] для обозначения необязательных аргументов. Скобки не являются частью команды.

Важное примечание. Пакетные системы на Pitzer, Ruby и Owens полностью независимы. Обязательно отправляйте свои задания на узел входа в систему для системы, в которой вы хотите, чтобы они выполнялись.Весь мониторинг, пока задание находится в очереди или выполняется, также должно выполняться в той же системе. Результат вашей работы, конечно же, будет виден из обеих систем.

Команды для управления заданиями

Эти команды обычно запускаются из узла входа в систему для управления пакетными заданиями. Пакетные системы в Pitzer и Owens полностью разделены, поэтому команды должны выполняться в системе, в которой должно выполняться задание.

партия

Команда sbatch используется для отправки задания в пакетную систему.

Использование Описание Пример
пакет [ опции ] сценарий Отправить сценарий для пакетного задания. Список опций используется редко, но может дополнять или переопределять директивы в строках заголовков скрипта. sbatch sim.job
sbatch -t array_request [ опции ] jobid Отправить массив заданий sbatch -t 1-100 сим.работа
синтерактивный [ опции ] Отправка интерактивного пакетного задания синтерактивный -n 4

сальник

Команда squeue используется для отображения состояния пакетных заданий.

Использование Описание Пример
сальник Показать все задания, находящиеся в настоящее время в пакетной системе. ракель
squeue -j jobid Показать информацию о задании jobid. Флаг -j использует альтернативный формат. сальник -j 123456
squeue -j jobid -l Показать подробную информацию о статусе задания jobid. сальник -j 123456 -l
squeue -u имя пользователя [-l] Показать информацию обо всех заданиях, принадлежащих пользователю username. шлейф -u usr1234
сканцель

Команда scancel может использоваться для удаления поставленного в очередь или выполняющегося задания.

Использование Описание Пример
scancel jobid Удалить задание jobid .

сканцелл 123456

сканцель джобид Удалить все задания в массиве заданий jobid . сканцелл 123456
qdel jobid [номер_задания] Удалить номер задания в массиве заданий идентификатор задания . сканцелл 123456_14
выходной файл slurm

Существует выходной файл, в котором хранятся stdout и stderr для выполняющегося задания, который можно просмотреть, чтобы проверить вывод выполняющегося задания. По умолчанию он находится в каталоге, в котором было отправлено задание, и имеет формат:

.
slurm-.из 

Не удаляйте и не изменяйте выходной файл, созданный во время выполнения задания. Это может отрицательно сказаться на вашей текущей работе.

контроль

Команда scontrol может использоваться для изменения атрибутов поставленного в очередь (не выполняющегося) задания. Не все атрибуты можно изменить.

Использование Описание Пример
scontrol update jobid= [ опция ] Изменить один или несколько атрибутов задания в очереди.Параметры, которые вы можете изменить, являются подмножеством директив, которые можно использовать при отправке задания.

обновление scontrol jobid = 123456 --ntasks = 4

sуправление удержанием/отпусканием

Команда qhold позволяет приостановить задание, поставленное в очередь. Выполнение задания будет запрещено до тех пор, пока вы не отмените блокировку с помощью команды qrls .

Использование Описание Пример
удержание scontrol jobid Приостановить работу пользователя jobid sудержание 123456
выпуск scontrol jobid Отменить удержание пользователя, ранее размещенное на задании jobid блок управления 123456
оценка времени начала

Команда squeue может попытаться оценить, когда начнется выполнение поставленного в очередь задания.Это крайне ненадежно, часто делает большие ошибки в любом направлении.

Использование Описание Пример
squeue -j  jobid \
--Format=username,jobid,account,startTime  
Показать расчетное время начала.
шлейф -j 123456\
--Format=username,jobid,account,startTime  

 

Команды, используемые только внутри пакетного задания

 

Эти команды можно использовать только внутри пакетного задания.

mpexec

Используйте команду mpiexec для запуска параллельной программы или одновременного запуска нескольких процессов в задании. Это программа-заменитель скрипта mpirun , входящего в состав пакета mpich.
Версия OSC mpiexec настроена для работы с нашей пакетной средой. Существуют и другие программы mpiexec, но крайне важно, чтобы вы использовали ту, которая поставляется с нашей системой.

Использование Описание Пример
mpiexec имя_программы [ аргументы ] Запустите исполняемую программу имя_программы параллельно, используя столько процессов, сколько процессоров (ядер) назначено заданию (узлы*ppn).

mpiexec myprog

mpiexec yourprog abc.dat 123

mpiexec - ppn 1 имя программы [ аргументы ] Запускать только один процесс на узел. mpiexec -ppn 1 myprog
mpiexec - ppn num имя_программы [ args ] Запустить указанное количество процессов на каждом узле. mpiexec -ppn 3 myprog
mpiexec -tv [ опции ] имя_программы [ аргументы ] Запустите программу с помощью параллельного отладчика TotalView.

mpiexec -tv myprog

mpiexec -n номер программы [ аргументы ]

mpiexec -np номер имя_программы [ аргументы ] Запускать только указанное количество процессов.( -n и -np эквивалентны.) Не распределяет процессы равномерно по узлам. mpiexec -n 3 myprog
Указанные выше параметры относятся к установкам MVAPICh3 и IntelMPI в OSC. См. страницу программного обеспечения OpenMPI для использования mpiexec с OpenMPI.
pbsdcp

Команда pbsdcp — это команда распределенного копирования для среды SLURM. Он копирует файлы в или из каждого узла кластера, назначенного вашему заданию.Это необходимо при копировании файлов в каталоги, которые не являются общими для узлов, например, $TMPDIR .

Варианты: -r для рекурсии и -p для сохранения времени модификации и режимов.

Использование Описание Пример
pbsdcp [-s] [ опции ] srcfiles  цель «Разброс».Скопируйте один или несколько файлов из общего хранилища в целевой каталог на каждом узле (локальное хранилище). Флаг -s является необязательным.

pbsdcp -s infile1 infile2 $TMPDIR

Модель pbsdcp.* $TMPDIR

pbsdcp -g [ опции ] srcfiles  цель «Собери». Скопируйте исходные файлы с каждого узла в общий целевой каталог.Подстановочные знаки должны быть заключены в кавычки. pbsdcp -g '$TMPDIR/outfile*' $PBS_O_WORKDIR

Примечание. В режиме сбора, если файлы на разных узлах имеют одинаковое имя, они перезапишут друг друга. В приведенном выше примере -g имена файлов могут иметь форму outfile001 , outfile002 и т. д., при этом каждый узел создает свой набор файлов.

информация об окончании учета заданий

Чтобы просмотреть общую статистику задания, в конце используйте команду:

scontrol показать задание = $ SLURM_JOB_ID 

 

Команда DOS: ATTRIB

Команда DOS: ATTRIB

ATTRIB


Тип: Внешний (3.0 и выше)

Синтаксис:

ATTRIB [d:][путь]имя файла [/S]
ATTRIB [+ R|-R] [+A|-A] [+ H|-H] [+ S |-S] [d:][путь]имя_файла [/S]

Назначение:
Устанавливает или отображает атрибуты «только для чтения», «архив», «система» и «скрытый» файл или каталог.

Обсуждение

С помощью команды ATTRIB вы можете изменить атрибут чтения/записи файла или набор атрибут архива. Если вы используете эту команду, чтобы указать файл как только для чтения, к файлу можно получить доступ, но нельзя изменить или удалить.

Если файл имеет атрибут -R, его можно как читать, так и записывать в (это называется чтение/запись). Если файл имеет атрибут +R, его можно читать из, но не для записи (например, вы можете использовать текстовый процессор для Смотреть на него, но не изменять его).

ПРИМЕЧАНИЕ.
Если вы пытаетесь стереть файл после того, как вы установили его атрибут только для чтения (+Р), DOS отобразит слова ACCESS DENIED. Прежде чем вы сможете стереть файл ты необходимо использовать команду ATTRIB, чтобы изменить атрибут файла на чтение/запись (-Р).

Команды BACKUP, RESTORE и XCOPY могут использовать атрибут архива. Ты сможешь используйте опции +A или -A для выборочного резервного копирования с помощью BACKUP команда. Ты также можно использовать эти параметры для выборочного копирования с помощью команды XCOPY.

Можно использовать подстановочные знаки (? и *). Однако вы НЕ МОЖЕТЕ использовать каталог имя вместо имени файла, чтобы изменить атрибуты всех файлов в каталог.

В DOS версии 5 и выше вы можете скрыть файлы данных, применяя +H (скрытый) атрибут.-H удаляет скрытый атрибут. +S (система) и -S варианты обычно используется программистами для скрытия и отображения командных файлов, используемых только по ДОС. После применения скрытого или системного атрибута к файлу он не будет появиться в список каталогов, если вы специально не запросите его с параметром /A параметр команда СПРАВОЧНИК.

Опции

+R — используйте опцию +R, чтобы сделать файл доступным только для чтения. Файлы только для чтения могут быть читаются, но их нельзя изменить или удалить.

-R — используйте параметр -R, чтобы изменить атрибут защиты файла обратно к нормальный (чтобы его можно было прочитать, изменить или удалить).

+A — Используйте опцию +A, чтобы установить атрибут ARCHIVE для файла. Когда +А используется, это помечает файл как доступный для архивирования при использовании в Команды BACKUP или XCOPY.

-A — Используйте параметр -A, чтобы отключить атрибут АРХИВ.

+H — в версиях DOS с 4 по 6 используйте параметр +H, чтобы установить СКРЫТЫЙ атрибут файла, чтобы он не отображался в каталоге листинг.

-H — Используйте параметр -H, чтобы отключить атрибут СКРЫТЫЙ.

+S — в версиях DOS после версии 4 используйте параметр +S, чтобы установить СИСТЕМА атрибут файла. При использовании параметра +S файл помечается как а командный файл, используемый только DOS. Файл не появится в каталоге листинг. Этот атрибут обычно зарезервирован для программистов.

-S — используйте параметр -S, чтобы отключить атрибут SYSTEM.

/S — используйте переключатель /S для установки атрибутов найденных подкаталогов. внутри указанный путь.

Примеры

Следующая форма команды устанавливает атрибут только для чтения для файл ПРОДАЖ87.TXT:
ПРОДАЖ87 атрибут +r a:sales87.txt
SALES87 После того как вы установили атрибут только для чтения для файла SALES87.TXT, DOS будем не позволит вам удалить или изменить его (пока атрибут не будет удален).

ПРОДАЖИ87 Чтобы установить атрибут архива для файла LETTER3.DOC, который находится в \ПИСЬМА на диске B введите

attrib +a b:\letters\letter3.doc

После установки бита архива такие команды, как XCOPY, могут избирательно действовать на них (используя переключатель BACKUP или XCOPY /M). За дополнительной информацией, Ссылаться на разделы команд BACKUP и XCOPY.
Чтобы определить текущие настройки атрибутов для всех файлов в Текущий каталоге, введите

attrib *.*

Параметры атрибутов для всех файлов в текущем каталоге быть отображается. Если, например, вы работали в каталоге \LETTERS на дискете в дисководе B, ATTRIB будет отображать что-то вроде этого:

A B:\LETTERS\LETTER3.TXT
A R B:\LETTERS\SALES87.DOC
B:\LETTERS\SALES-N.TXT

Этот дисплей показывает, что были найдены три файла и что первые два было бит архива установлен. Второй файл также помечен как доступный только для чтения.

Вернуться к
Указатель команд Easy DOS


Основные команды пакетных файлов — Сумасшедший программист

Мы закончили со всеми основными предварительными концепциями, такими как переменные, операторы, условные команды, команды ветвления и цикла.Теперь в этом руководстве рассматриваются основные команды пакетного файла, которые обычно используются для усложнения пакетного файла.

Подкоманды, переключатели, параметры

Прежде чем перейти к командам, я хотел бы дать краткий обзор частей команд. Команда в пакетной программе может состоять из подкоманд и переключателей. Подкоманды — это вспомогательные команды, сопровождаемые основными командами. Эти подкоманды обычно служат для повышения точности результата, который мы ищем.Как и в приведенном ниже примере,

Эта команда используется для вывода списка всех пользователей на компьютере. Как вы можете видеть здесь, «net» — это основная команда, а подкоманда «users» используется для сужения результатов.

Переключатели позволяют нам запускать различные варианты команд. Возможно, вы видели переключатели в команде «set», такие как p,a.

Мы также можем передавать в пакетный файл параметры, которые являются ничем иным, как аргументами командной строки. Доступ к этим параметрам можно получить по номеру по порядку.Синтаксис для передачи параметров из командной строки показан ниже.

Имя-пакетного файла [список параметров]

Имя-пакетного файла [список параметров]

new HelloWorld!

Здесь «новый» — это имя пакетного файла, а «Helloworld!» — аргумент, который я передам через командную строку в программу. Параметры разделены пробелами и запятыми, если бы я поставил пробел или запятую, Hello и world будут рассматриваться как два разных параметра.Итак, здесь hello и world рассматриваются как один параметр. Попробуйте приведенную ниже программу для доступа к параметрам через командную строку.

Программа №1: Для доступа к параметрам, указанным из командной строки

@echo off компакт диск echo Добро пожаловать в программу %1% Пауза

@echo OFF

CD

ECHO Добро пожаловать в % 1 % Программа

Пауза


, если вы видите программу, вы можете легко сказать, что программа приветствуется (программа приветствуется на программе, приветствуя программу, приветствуя программу. что-то вместо программы %1%).Здесь %1% заменяется первым параметром командной строки. Если у вас также есть второй и третий, вы можете получить к нему доступ в программе по %2%, %3%, …. скоро.

Вывод
C:Usersuser1Desktop>новый HelloWorld!!
Добро пожаловать в HelloWorld!! программа
Нажмите любую клавишу, чтобы продолжить. . .

Color Command

Эта команда используется для установки цвета переднего плана, а также фона окна командной строки.Цвет определяется шестнадцатеричными цветовыми кодами. На изображении ниже перечислены некоторые цветовые коды.

Цвет переднего плана — это не что иное, как цвет текста, который установлен по умолчанию 7, а цвет фона установлен по умолчанию 0.

Цвет background-color-codeforeground-color-code


Программа №2: Изменение переднего плана и фона окна подсказки

@echo off цвет ЭД эхо Круто! Вы изменили цвет пауза

@эхо выкл

цвет ED

эхо Потрясающе! Вы изменили цвет.Есть много ситуаций, когда вы будете взаимодействовать с пользователем, отображая ему список опций и получая входные данные и выводя диалоги состояния. В таких случаях вам может понадобиться очистить содержимое экрана. Вы можете использовать эту команду, чтобы стереть экран в текущих окнах и начать с нового окна.

Синтаксис

Команда заголовка

Когда вы дважды щелкнете пакетный файл и запустите его, вы, возможно, заметили, что имя в строке заголовка — это путь к cmd.exe, расположенную в папке system32 вашего каталога Windows. Если вы хотите изменить название на желаемое, используйте эту команду. Команда title устанавливает заголовок для текущего окна.

Синтаксис


Программа №3: ​​Для иллюстрации команд title и cls

@echo off title Учебники для сумасшедших программистов echo Добро пожаловать в Мое окно. Пауза клс эхо Вы заметили, что предыдущее сообщение стерлось? эхо, вы правы, я использовал там команду «cls» pause

@echo off

 

title Crazy Programmer Tutorials

echo Добро пожаловать в Мое окно.

Пауза

CLS

ECHO. Вы заметили, что предыдущее сообщение уничтожено

Echo, вы правы, я использовал команду CLS ‘

Пауза


Выходная для этого для этой программа должна отображаться в двух окнах, так как экран очищается после выполнения первой эхо-команды.

Обратите внимание, что заголовок окна был изменен на текст, который мы дали в программе. Теперь сразу после нажатия любой клавиши выполняется команда «cls», и текст в приглашении стирается.

Попробуйте!
Разработайте как минимум две версии программ, используя команды color, title, cls вместе с некоторыми условными командами.

пакет: запланированные команды для выполнения в пакетной очереди

Пакет

: выполнение команд по расписанию в очереди пакетов

Команда для отображения руководства по пакету в Linux: $ man 1p batch

ПРОЛОГ

Эта страница руководства является частью Руководства программиста POSIX.Реализация этого интерфейса в Linux может отличаться (см. соответствующую страницу руководства Linux для получения подробной информации о поведении Linux), или интерфейс может быть не реализован в Linux.

НАЗВАНИЕ

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

ОБЗОР

партия

ОПИСАНИЕ

Утилита пакет должна считывать команды со стандартного ввода и запланировать их выполнение в пакетной очереди. Это должно быть эквивалент команды:

  at -q b -m сейчас 
 

где очередь b — это специальная очередь на , специально для пакетные задания.Пакетные задания должны быть отправлены в пакетную очередь без ограничений по времени и должна управляться системой с использованием алгоритмов, основанных на неуказанные факторы, которые могут меняться при каждом вызове пакета .

Пользователям разрешается использовать пакет , если их имя отображается в файле /usr/lib/cron/at.allow . Если этот файл не существует, файл /usr/lib/cron/at.deny должен быть проверен, чтобы определить следует ли запретить пользователю доступ к пакету .Если ни один файл не существует, только процесс с соответствующими привилегиями будет разрешено представить работу. Если только at.deny существует и пуст, глобальное использование должно быть разрешено. at.allow и файла at.deny должны состоять из одного имени пользователя за строку.

ОПЦИИ

Никто.

ОПЕРАНДЫ

Никто.

СТАНДАРТНЫЙ ИН

Стандартный ввод должен быть текстовым файлом, состоящим из допустимых команд. на язык команд оболочки, описанный в Язык команд оболочки .

ВХОДНЫЕ ФАЙЛЫ

Текстовые файлы /usr/lib/cron/at.allow и /usr/lib/cron/at.deny должен содержать ноль или более имен пользователей, по одному в строке, пользователей, которым, соответственно, разрешен или запрещен доступ к на и партия коммунальные услуги.

ПЕРЕМЕННЫЕ СРЕДЫ

Следующие переменные среды должны влиять на выполнение партия :

ЯЗЫК
Укажите значение по умолчанию для переменных интернационализации, которые не установлены или равны нулю.(См. том «Базовые определения» IEEE Std 1003.1-2001, раздел 8.2, переменные интернационализации. за приоритет переменных интернационализации, используемых для определения значения категорий локали.)
LC_ALL
Если задано непустое строковое значение, переопределить значения всех другие переменные интернационализации.
LC_CTYPE
Определить локаль для интерпретации последовательностей байтов текстовых данных в виде символов (например, однобайтовых в виде в отличие от многобайтовых символов в аргументах и ​​входных файлах).
LC_СООБЩЕНИЯ
Определите локаль, которая должна использоваться для изменения формата и содержание диагностических сообщений, записанных в стандартную ошибку и информативные сообщения выводятся на стандартный вывод.
ЛК_ВРЕМЯ
Определить формат и содержимое строк даты и времени, записанных по партии .
NLSPATH
Определите расположение каталогов сообщений для обработки LC_MESSAGES. .
ОБОЛОЧКА
Определите имя командного интерпретатора, который будет использоваться для вызова на работе. Если переменная не установлена ​​или равна нулю, следует использовать sh . Если для него задано значение, отличное от имени sh , реализация должен сделать одно из следующего: использовать эту оболочку; используйте ш ; использовать оболочка входа из пользовательской базы данных; любое из предшествующих сопровождений предупреждением диагностика, по поводу которой был выбран.
ТЗ
Определите часовой пояс.Задание сдается на выполнение в время, указанное timespec или -t время относительно часового пояса, заданного переменной TZ . Если timespec указывает часовой пояс, он переопределяет ТЗ . Если timespec не указывает часовой пояс и TZ не установлен или равен нулю, неуказанный часовой пояс по умолчанию должен быть использовал.

АСИНХРОННЫЕ СОБЫТИЯ

По умолчанию.

СТАНДАРТНЫЙ

Когда стандартный ввод является терминалом, подсказки неуказанного формата для каждая строка пользовательского ввода, описанная в разделе STDIN могут быть записаны на стандартный вывод.

СТДЕРР

Следующее должно быть записано в стандартную ошибку, когда задание было успешно отправлено:

  "задание %s в %s\n",   at_job_id   , <   дата   > 
 

где дата должна быть эквивалентна по формату выводу:

  дата +"%a %b %e %T %Y" 
 

Дата и время должны быть скорректированы таким образом, чтобы они отображались в часовой пояс пользователя (согласно TZ переменная).

Ни это, ни предупреждающие сообщения о выборе интерпретатор команд, считаются диагностикой, которая изменяет статус выхода.

Диагностические сообщения, если таковые имеются, должны быть записаны в стандартную ошибку.

ВЫВОДНЫЕ ФАЙЛЫ

Никто.

РАСШИРЕННОЕ ОПИСАНИЕ

Никто.

СТАТУС ВЫХОДА

Должны быть возвращены следующие выходные значения:

  0
Успешное завершение.
>0
Произошла ошибка.

ПОСЛЕДСТВИЯ ОШИБОК

Работа не должна быть запланирована.

Следующие разделы носят информационный характер.

ПРИМЕНЕНИЕ ИСПОЛЬЗОВАНИЕ

Может быть полезно перенаправить стандартный вывод в пределах указанного команды.

ПРИМЕРЫ

1.
Эту последовательность можно использовать на терминале:
  партия
сортировать <файл>outfile
ЕОТ 
 
2.
Эта последовательность, демонстрирующая перенаправление стандартной ошибки на pipe, полезен в командной процедуре (последовательность вывода спецификации перенаправления важны):
  партия <<
! diff файл1 файл2 2>&1 >outfile | почта моя группа
! 
 

ОБОСНОВАНИЕ

Ранние предложения описывали партию и совершенно отдельно. с по даже хотя историческая модель рассматривала его почти как синоним на -кб .Количество были добавлены функции для списка и управления пакетной работой отдельно от те в в . На дальнейших размышлений было решено, что пользы от этого нет заслуживают изменения на исторический интерфейс.

Параметр -m был включен в эквивалентную команду at . потому что это историческая практика отправлять результаты отправителю по почте, даже если все результат работы перенаправляется. Как поясняется в ОБОСНОВАНИИ для в ключевое слово теперь отправляет задание на немедленную выполнение (после планирования задержки), несмотря на некоторые исторические системы, где на сейчас было бы рассмотрено ошибка.

БУДУЩИЕ НАПРАВЛЕНИЯ

Никто.

АВТОРСКОЕ ПРАВО

Части этого текста перепечатаны и воспроизведены в электронном виде из IEEE Std 1003.1, издание 2003 г., стандарт для информационных технологий — Portable Operating System Interface (POSIX), The Open Group Base Спецификации, выпуск 6, авторское право (C) 2001–2003 гг.

Добавить комментарий

Ваш адрес email не будет опубликован.