Bat file команды: BAT-файл: откройте новое окно cmd и выполните в нем команду

Содержание

BAT-файл: откройте новое окно cmd и выполните в нем команду



Я пытаюсь открыть новое командное окно в файле BAT:

start %windir%\system32\cmd.exe

После того как он откроется, я хотел бы выполнить команду BAT в новом окне:

echo "test in new window"

Как я могу это сделать?

batch-file command-line
Поделиться Источник Tjekkles     22 февраля 2012 в 10:18

8 ответов


  • откройте окно CMD и выполните команду

    Следующий скрипт VB открывает окно CMD и выполняет пинг до IP – 127.0.0.1 Я не понимаю, почему выходные данные из окна CMD включают только результаты ping, а не “ping 127.0.0.1” ? Мой вопрос: что нужно изменить в моем скрипте VB, чтобы увидеть также команду ping из окна CMD, а не только результаты…

  • Откройте cmd, измените каталог и выполните команду

    Я пытаюсь написать простой batch file для инициализации некоторых инструментов, которые мне нужны при запуске windows. Это то, что у меня есть на данный момент: @echo off start /d C:\Program Files\Sublime Text 3 sublime_text.exe start cmd.exe /k cd /d D:xampp/htdocs/webshop Что я хотел бы сделать,…



286

Возможно, вы уже нашли свой ответ, потому что некоторое время назад вы спросили. Но я пытался сделать что-то подобное при кодировании ror. Я хотел запустить «rails server» в новом окне cmd, чтобы мне не пришлось открывать новое cmd, а затем снова искать свой путь.

Что я узнал, так это то, что я использовал переключатель K вот так:

start cmd /k echo Hello, World!

запуск до «cmd» откроет приложение в новом окне, а «/K» выполнит «echo Hello, World!» после того, как новый cmd будет запущен.

Вы также можете использовать переключатель /C для чего-то подобного.

start cmd /C pause

Это приведет к выполнению «pause», но закроет окно, когда команда будет выполнена. В данном случае после того, как вы нажали кнопку. Я нашел это полезным для «rails server», а затем, когда я выключаю свой dev-сервер, мне не нужно закрывать окно после этого.

Поделиться aross     09 июля 2012 в 10:44



89

Используйте следующее в своем batch file:

start cmd.exe /k "more-batch-commands-here"

или

start cmd.exe /c "more-batch-commands-here"

/c Выполняет команду , указанную строкой, а затем завершает работу
/k Выполняет команду, указанную строкой, но остается

Для получения более подробной информации обратитесь к документации cmd.exe с использованием cmd /? .

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

Примеры :

Запустите программу и передайте параметр filename:
CMD /c write.exe c:\docs\sample.txt

Запустите программу и передайте длинное имя файла:
CMD /c write.exe "c:\sample documents\sample.txt"

Пробелы в пути к программе:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""

Пробелы в пути программы + параметры:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2


CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""

Запуск demo1 и demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""

Источник: http://ss64.com/nt/cmd.html

Поделиться Shannon Matthews     09 февраля 2015 в 23:33



13

Это не очень просто.

Лучший подход заключается в том, чтобы часть вашего скрипта, которую вы хотите выполнить в «new window», находилась в отдельном файле .bat. Это может быть непрактично, если, например, вам нужно много состояний из rest вашего скрипта (переменные и т. Д.). Один из вариантов-передать любые значения, которые вам нужны (например, dir для работы) в batch file:

start cmd.exe stuff.bat %this_dir%

Если у вас есть большой объем состояния для передачи, вы можете рассмотреть возможность создания batch file во время выполнения:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo

del /q /f "%tmp%"

echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"

start cmd.exe "%tmp%"

del /q /f "%tmp%"

Очевидно, что это тривиальный пример.

Поделиться sorpigal     22 февраля 2012 в 13:09


  • . Bat файл для открытия окна cmd

    Итак, я должен написать файл .bat, чтобы открыть окно DOS, чтобы я мог запустить свой проект CS. Да, я знаю, что могу просто открыть окно cmd, но профессор хочет, чтобы мы написали файл .bat, чтобы открыть окно cmd. Кто-нибудь знает, как написать файл .bat, чтобы открыть cmdwindow? Кстати, я…

  • как выполнить команды cmd и скомпилировать их в файл .bat

    Здравствуйте, меня тошнит от повторения команд в окне cmd, поэтому я хочу файл .bat, который делает cmd открытым, а затем выполняет команду, и было бы здорово, если бы он был закрыт после выполнения команд, таких как пример: ipconfig/release ipconfig/renew Затем закрывает окно cmd Спасибо.



11

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

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

:: Start MongoDB
start cmd.exe /k "mongod"

:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"

:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"

Поделиться Dan Zuzevich     06 июля 2017 в 14:54



7

Спасибо всем здесь, в Stack Overflow; это решение решает вышеуказанный вопрос, но расширено для автоматического запуска этих задач:

  1. Я хочу запустить свой сервер rails
  2. Запустите грабли jobs:worker для моей отложенной работы gem тоже
  3. и откройте интернет-браузер по умолчанию, чтобы показать мою страницу
  4. наконец, чтобы оставить окно cmd открытым для любых дополнительных команд во время моего сеанса.

Я думаю, мой проект называется

«antiquorum.»

Создайте файл «init.bat» в каталоге %USERPROFILE% (откройте окно cmd и посмотрите на путь слева от курсора, чтобы узнать, что такое %USERPROFILE%)

@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
    start cmd /k %USERPROFILE%\init.bat worker
    start cmd /k %USERPROFILE%\init.bat server
    TIMEOUT 30
    start "" "http://localhost:3000/"
    GOTO end
:server
    rails s
    GOTO end
:worker
    rake jobs:work
:end

В новом окне командной строки введите: C:> init antiquorum

Код открывает еще два cmd windows и браузер. TIMEOUT позволяет избежать ошибок в браузере.

Раздел :начало выполняет эту работу. Вы можете запускать задачи 1,2 или 4 отдельно , введя параметры:

сервер , рабочий или нет, чтобы оставить cmd открытым в корне проекта «antiquorum».

Наслаждаться.

Поделиться Fer Padron     08 сентября 2013 в 00:51



2

Если я правильно понимаю, что вы делаете это в стороне, ваш файл bat откроет командную строку и выведет ваше сообщение на экран.

cmd.exe hello world

надеюсь, это поможет.

Поделиться Chris Derry     22 февраля 2012 в 10:27



2

чтобы запустить файл python в новом окне cmd с пробелами в имени файла:

start cmd.exe /k python "C:\Program Files\HelloWorld.py"

Поделиться

bracoo     19 февраля 2019 в 02:30



0

Добавление /k между двумя командами выполняет обе команды in order .

Пример:

cmd /k echo "hello"

эта команда сначала откроет command prompt , а затем выполнит команду echo "hello"

Поделиться Vicky Salunkhe     23 июня 2019 в 21:07


Похожие вопросы:


bat-Script: выполнить команду, повторно открыть cmd и выполнить другую команду

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


Как открыть новое окно cmd и выполнить в нем for-loop?

У меня есть файл test.cmd со следующей командой: call cmd /c start echo foo && pause call cmd /c start for /l %%x in (0, 1, 2) do python test.py config%%x Первая команда работает нормально и…


BAT-файл для открытия CMD в текущем каталоге

У меня есть много сценариев, с которыми я взаимодействую из командной строки. Каждый раз, когда мне нужно их использовать, я должен открыть окно командной строки и скопировать+paste и CD в путь к…


откройте окно CMD и выполните команду

Следующий скрипт VB открывает окно CMD и выполняет пинг до IP – 127.0.0.1 Я не понимаю, почему выходные данные из окна CMD включают только результаты ping, а не “ping 127.0.0.1” ? Мой вопрос: что…


Откройте cmd, измените каталог и выполните команду

Я пытаюсь написать простой batch file для инициализации некоторых инструментов, которые мне нужны при запуске windows. Это то, что у меня есть на данный момент: @echo off start /d C:\Program…


. Bat файл для открытия окна cmd

Итак, я должен написать файл .bat, чтобы открыть окно DOS, чтобы я мог запустить свой проект CS. Да, я знаю, что могу просто открыть окно cmd, но профессор хочет, чтобы мы написали файл .bat, чтобы…


как выполнить команды cmd и скомпилировать их в файл .bat

Здравствуйте, меня тошнит от повторения команд в окне cmd, поэтому я хочу файл .bat, который делает cmd открытым, а затем выполняет команду, и было бы здорово, если бы он был закрыт после выполнения…


Выполните команду cmd без создания файла .bat

есть ли способ выполнить команду cmd, такую как move FolderA FolderB, не создавая файл .bat и не запуская его? Было бы неплохо, если бы он работал без создания файлов на HDD.


Есть ли способ запустить окно terminal (или cmd на Windows) и передать/выполнить команду?

Вопрос Можно ли сделать следующее? откройте новое окно cmd.exe или terminal (на MacOS / Linux) передайте / выполните команду, например cd <path> Проблема Я могу открыть cmd, выполнив эту…

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

Проблемы

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

Указанное имя не распознается как внутренняя или внешняя команда, программа или пакетный файл.

Действия по воспроизведению проблемы.

  1. Создайте папку с именем Test (2) в корневом каталоге.

  2. Создайте пакетный файл в папке test (2) с именем Test. bat.

  3. Вставьте в файле Test. bat следующие строки:

          echo off      pause
  4. Сохраните тест. bat.

  5. В командной строке в корневом каталоге выполните пакетный файл со следующей строкой:\test(2)\test.bat

Обратите внимание на сообщение об ошибке:

Указанное имя не распознается как внутренняя или внешняя команда, программа или пакетный файл.

Обходное решение

Несмотря на то, что пакетный файл не запускается в корневом каталоге, команда запускается, если заключить командную строку в кавычки. Например, в приведенной выше ситуации пользователь должен ввести в командной строке следующую строку: «\test(2)\test.bat» Эта команда запустит пакетный файл в обычном режиме.

Статус

Корпорация Microsoft подтвердила наличие проблемы в Windows NT версии 4,0. Мы постараемся устранить эту проблему и разместите новую информацию в базе знаний Майкрософт, как только она станет доступна.

Как сделать файл бат — подробная инструкция по созданию

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

В статье рассмотрены три метода создания .bat файлов:

  1. С помощью командной строки.
  2. С помощью программы «Блокнот».
  3. С помощью утилиты «Dr.Batcher».

Как сделать файл бат

Создание пакетного файла с помощью командной строки

Шаг 1. Для запуска командной строки в меню «Пуск» используйте диалог «Найти программы и файлы» Вы должны задать параметр поиска cmd и кликнуть левой кнопкой мыши по пиктограмме в разделе «Программы».

В параметре поиска вводим cmd и кликаем левой кнопкой мыши по пиктограмме в разделе «Программы»

Шаг 2. Для хранения написанных батников рекомендуется использовать отдельную директорию, поэтому выберите место на Вашем жестком диске и создайте специальную папку, путем ввода команды «MD D:\Bat».

На заметку! Команда вводится без кавычек, пробел ставится только после использования MD. В описываемом случае папка с именем «Bat» будет создана на диске D. Командная строка нечувствительна к регистру, то есть результат выполнения «MD D:\Bat», «md D:\Bat» и «md d:\Bat» будет одинаков.

Создаем специальную папку, путем ввода команды «MD D:\Bat»

Шаг 3. Создайте собственно батник командой «@echo off > D:\Bat\probnik.bat».

Создаем батник командой «@echo off > D:\Bat\probnik.bat»

На заметку! В данном случае регистр важен при указании пути размещения, то есть папки «bat», «Bat» и «BAT» – три независимые и абсолютно разные директории. При указании на несуществующую папку, команда не будет выполнена. Учтите, сообщения об ошибке тоже не будет.

Шаг 4. Для изменения содержимого файла следует открыть место его хранения, вызвать контекстное меню и выбрать строку «Изменить».

Для изменения содержимого файла открываем место его хранения, вызываем контекстное меню и выбираем строку «Изменить»

Создание пакетного файла с помощью программы «Блокнот»

Шаг 1. Для запуска блокнота войдите в меню «Все программы», пункт «Стандартные» и щелкните по запускающей пиктограмме.

Запускаем программу «Блокнот»

Шаг 2. Укажите, какие команды должен выполнять bat файл.

Указываем, какие команды должен выполнять bat файл

Узнайте, как создать файл без больших познаний в программировании, из новой статьи — «Как создать файл bat».

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

«@echo off

mode con cols=32 lines=50

color a

title star!

for %%i in (

88888888888888881888888888888888,
88888888888888811188888888888888,
88888888888888111118888888888888,
88888888888881111111888888888888,
88888888888811111111188888888888,
88888888888111111111118888888888,
88888888881111111111111888888888,
11111111111111111111111111111111,
88111111111111111111111111111188,
88811111111111111111111111111888,
88881111111111111111111111118888,
88888111111111111111111111188888,
88888811111111118111111111888888,
88888111111111188811111111188888,
88881111111111888881111111118888,
88811111111118888888111111111888,
88111111111188888888111111111188,
81111111111888888888811111111118

) do echo %%i

pause > nul

bat».

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

Шаг 3. Сохраните получившийся файл в нужную директорию. Для изменения разрешения используйте строку «Тип файла», в ней следует выбрать «Все файлы», а при вводе имени, после точки, укажите «bat».

Сохраняем получившийся файл в нужную директорию

Создание пакетного файла с помощью утилиты «Dr.Batcher»

Указанный программный продукт является платным, но предоставляет возможность использовать тестовую версию в течение 30 дней.

Утилита «Dr.Batcher»

Шаг 1. Для создания файла воспользуйтесь меню «File», пункт «New…» или комбинацией клавиш «Ctrl+N».

Создаем файл

Шаг 2. В диалоговом окне отметьте «Empty Batch File» и нажмите «ОК».

Отмечаем «Empty Batch File» и нажимаем «ОК»

Шаг 3. Укажите, какие команды должен выполнять bat файл.

Указываем, какие команды должен выполнять bat файл

На заметку! В правом фрейме имеются ключевые команды, которые Вы можете использовать при написании кода. Достаточно выделить нужную и нажать на кнопку «Insert Command», что помогает сэкономить время при работе.

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

Шаг 4. Сохраните получившийся файл в нужную директорию.

Сохраняем получившийся файл в нужную директорию

Важно! Обратите внимание, что указанная утилита позволяет производить отладку программы «на лету». Достаточно воспользоваться меню «Batch», чтобы произвести запуск уже введенной последовательности. Ход выполнения отображается в нижнем фрейме. При использовании пункта «Execute in External Window…» будет произведено выполнение пакетного файла, аналогичный его запуску средствами операционной системы.

Указанная утилита позволяет производить отладку программы «на лету»

Заключение

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

Сведения\НаименованиеКомандная строкаБлокнотDr.Batcher
ЛицензияПоставка с WindowsПоставка с WindowsПлатная
Русский языкВ зависимости от версии WindowsВ зависимости от версии WindowsВ зависимости от версии
Создание пакетного файлаДаДаДа
Редактирование пакетного файлаНетДаДа
Удобство интерфейса (от 1 до 5)445

Видео — Создание Бат файла

 

Понравилась статья?
Сохраните, чтобы не потерять!

Bat-файлы в примерах

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

Чтобы открыть командную строку в нужном месте (в папке с файлами, например), нужно вызвать контекстное меню (ПКМ) с зажатой клавишей Shift:

О том, как работать с командной строкой вы можете прочесть в этой статье. Переходим непосредственно к командам.

Список всех команд консоли с описанием можно получить, набрав в консоли help
Справку по любой команде можно получить при помощи ключа /?
Например: DIR /? выведет справку по всем ключам команды DIR

Удаление временных файлов перед выключением компьютера

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

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

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

start /wait "" "C:\Program Files\CCleaner\CCleaner64.exe" /auto
start /wait "" "C:\WINDOWS\System32\shutdown.exe" /s /t 10

Программа CCleaner по-умолчанию отсутствует в Windows. Её нужно установить отдельно. Скачать установщик можно на сайте разработчика.

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

Необходимо создать BAT-файл и скопировать этот пример в него. Ярлык на bat-файл вывести на рабочий стол, назначить ему красивую иконку и выключать компьютер при помощи этого ярлыка-кнопки.

Получить список файлов в папке с помощью Bat-файла

Периодически пользуюсь bat-файлами для получения списков файлов в папках. Частая ситуация: по работе клиенты присылают от фотографа архив с фотографиями. Фотографии имеют названия в соответствии с артикулами товаров.

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

  1. Фото товара с артикулом А1234.jpg
  2. Фото товара с артикулом А1234 (2).jpg
  3. Фото товара с артикулом В1234.jpg
  4. Фото товара с артикулом В1234 (2).jpg

Сначала я получаю список всех файлов, находящихся в папке при помощи следующей команды:

dir *.jpg /B /L > filelist.txt

Команда *.jpg позволит учитывать только JPG-файлы при составлении списка. Ключ /B позволит получить список, содержащий только имена файлов, находящихся в папке. Ключ /L выведет все имена в нижнем регистре. Команда >filelist.txt создаст текстовой файл с именем filelist и запишет резутьтат туда.

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

type filelist.txt | findstr /I /V "(2)" > temp.txt

Команда findstr будет осуществлять поиск в ранее полученном файле. Ключ /I позволяет искать записи без учёта регистра, а ключ /V записывает строки, в которых отсутствует искомое совпадение. В кавычках указана строка, совпадение с которой нужно фиксировать. И последняя команда > temp.txt запишет в файл temp все результаты, не содержащие в имени «(2)». В результате я получу:

  1. Фото товара с артикулом А1234.jpg
  2. Фото товара с артикулом В1234.jpg

И далее на основе этого текстового списка буду готовить файл для импорта.

Если вам понадобится провести обратную операцию — вывести в файл temp.txt только совпадения, то в списке команд (findstr /?) вы не найдёте нужной. Есть только обратный фильтр по точному совпадению — /X.

Для этой задачи можно воспользоваться командой вывода номера строк /N, в которых имеются совпадения (номера выводятся вместе со строкой):

type filelist.txt | findstr /I /N "(2)" > temp.txt

Главное при работе с текстовой информацией (текстовыми файлами) помнить один момент:

Если для текстовых операций вы в качестве исходника используете файл, который создали не через командную строку, он должен быть в кодировке, которая понимается командной строкой. Например, CP1251 (ANSI).

Иначе рискуете получить на выходе нечто такое:

Скопировать дерево каталогов без файлов

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

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

xcopy folder_1 folder_2 /T /E

Команда xcopy берёт за основу дерево каталога по адресу folder_1 и создаёт его копию в папке folder_2. Ключ /T позволяет осуществить копирование каталогов, не копируя файлы, лежащие в них. Ключ /E уточняет, что копировать необходимо все каталоги, в т.ч. пустые.

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

Посчитать количество файлов в каталоге

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

@echo off
for /f %%i in ('dir /b /a-d') do set /a num+=1
echo in folder %num% files
pause

В подобных примерах часто вставляют строку chcp 1251 > nul, но я предпочитаю выводить все данные в кодировке по-умолчанию. У создаваемых bat-файлов она обычно определяется как OEM(DOS). Поэтому в выводе я использую латиницу и не заморачиваюсь. Для меня это актуально, когда присутствует работа с текстом, как в примерах выше. Команда pause нужна для того, чтобы успеть ознакомиться с результатом выполнения команды. После этого можно нажать любую клавишу и окно консоли закроется.

Если материалы сайта оказались для вас полезными, можете поддержать дальнейшее развитие ресурса, оказав ему (и мне ) моральную и материальную поддержку.

Задержка времени (пауза, тайм-аут) в бат-файле

Вот, нашёл в Сети рабочий пример для устройства задержки времени
(пауза, тайм-аут) при выполнении команды в bat-файле:

echo wscript.Sleep 30000>»%temp%\sleep30.vbs»
cscript //nologo «%temp%\sleep30.vbs»
del «%temp%\sleep30.vbs»

Работает в любой ОС Windows, аж бегом

Зачем нужна задержка (пауза, тайм-аут) при выполнении команды в bat-файле?

У всех – по-разному.
Лично мне она (пауза) понадобилась вот для чего:

– Взял простенький bat-файл для очистки временных папок и бросил его в АВТОЗАГРУЗКУ
Прикололся, типа – чтобы этот батничек чистил временные каталоги при запуске системы.
Текст батника вытащил из стандартного Total Commander-a:

cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

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

Досадно.
Однако, устройство паузы в 30 сек. решило всю проблему.
И система грузится, и папки темпов — чистятся.

Полный текст bat-файла стал теперь таким:

echo wscript.Sleep 30000>»%temp%\sleep30.vbs»
cscript //nologo «%temp%\sleep30.vbs»
del «%temp%\sleep30.vbs»
cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

Прим. Лошади понятно, что изменив цифру 30 на своё значение,
можно получить другие величины паузы в секундах в bat-файле.

Начиная с VISTA, в операционных системах семейства Windows присутствует команда TIMEOUT. Эта команда принимает значение таймаута, равного фиксированному периоду времени ожидания (в секундах) до выполнения команды или ожидание до нажатия клавиши. Имеется также параметр, зaдающий игнорирование нажатий клавиш.

Синтаксис
TIMEOUT [/T] 50 [/NOBREAK]

Параметры

/T 50
Таймаут = 50 сек. Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд. Значение, равное -1 задает неограниченное время ожидания до нажатия клавиши.
/NOBREAK
Игнорировать нажатия клавиш, ждать указанное время.
/?
Отображение справки в командной строке.

Примеры

TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1

Весь текст примера можно внести в bat-файл,
запустить и посмотреть, как это работает.
Впечатляет.

FOR — организация циклической обработки

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

Формат командной строки:

FOR %переменная IN (набор) DO команда [параметры]

Параметры:

%переменная — Однобуквенный подставляемый параметр.

(набор) — Определяет набор, состоящий из одного или нескольких элементов, обрабатываемых командой.

команда — Команда, которую следует выполнить для каждого элемента набора.

параметры — Параметры для команды, выполняемой по отношению к элементам набора.

. В пакетных файлах для команды FOR используется запись

%%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I).

Поддерживаются также дополнительные форма команды FOR:

FOR /D %переменная IN (набор) DO команда [параметры]

Ключ /D задает в качестве набора имена каталогов (не файлов).

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

Ключ /R задает выполнение команды для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа /R не указано имя каталога, используется текущий каталог. Если набор — это одиночный символ точки (.), команда просто перечисляет дерево каталогов.

FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

Ключ /L задает обработку набора из последовательности чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) — в (5 4 3 2 1)

FOR /F [«ключи»] %переменная IN (набор-файлов) DO команда [параметры]

FOR /F [«ключи»] %переменная IN («строка») DO команда [параметры]

FOR /F [«ключи»] %переменная IN (‘команда’) DO команда [параметры]

Ключ /F задает обработку файлов, строковых значений или результатов стандартного вывода другой команды. Набор файлов — содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивке его на отдельные строки текста и разборе каждой строки в ноль или более подстрок. Затем вызывается тело цикла «for», при выполнении которого каждая найденная подстрока используется в качестве значения переменной. По умолчанию ключ /F выделяет из каждой строки каждого файла первую отделенную пробелами подстроку. Пустые строки в файле пропускаются. Необязательный параметр «ключи» служит для переопределения правил разбора по умолчанию. Он представляет собой заключенную в кавычки строку, содержащую одно или несколько ключевых слов для определения параметров разбора. Ключевые слова:

eol=символ — знак начала комментария в конце строки ( признак конца обрабатываемых данных строки). Задается в виде одиночного символа.

skip=n — число пропускаемых при обработке строк от начала файла.

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

tokens=x,y,m-n — номера подстрок из каждой строки, передаваемые в тело цикла «for» для каждой итерации. Например, для обычного текстового файла, подстроками будут слова, а разделителями подстрок — пробелы или знаки табуляции. При использовании этого ключа выделяются дополнительные имена переменных. Формат m-n представляет собой диапазон подстрок с номерами от m по n. Если последний знак в строке tokens= является звездочкой, то создается дополнительная переменная, значением которой будет весь оставшийся текст в строке после разбора последней подстроки.

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

Поясняющий пример:

FOR /F «eol=; tokens=2,3* delims=, » %i in (myfile.txt) do @echo %i %j %k

Выполняется разбор файла myfile.txt. Все строки, которые начинаются с символа точки с запятой (eol=; ), пропускаются. Вторая и третья подстроки из каждой строки ( tokens=2,3 ) передаются в тело цикла «for», причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i принимает значение второй подстроки, %j — третьей, а %k — все оставшееся поле до конца строки после третьей подстроки . Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки. Чтобы использовать двойные кавычки, необходимо использовать параметр usebackq, иначе двойные кавычки будут восприняты как определение строки-литерала для разбора.

В данном примере переменная %i явно объявлена в инструкции «for», а переменные %j и %k объявляются неявно с помощью ключа tokens= . Ключ tokens= позволяет извлечь из одной строки файла до 26 подстрок. Следует помнить, что имена переменных FOR являются однобуквенными, с учетом регистра, поэтому одновременно не может быть активно более 52 переменных, задаваемых как явно, так и неявно.

Команда FOR /F может также использоваться для обработки явно заданной строки, заключенной в одиночные кавычки и указанной в качестве параметра в скобках. Она будет разобрана так же, как одиночная строка, считанная из входного файла.

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

FOR /F «usebackq delims==» %i IN (`set`) DO @echo %i,

Выполняется команда SET, отображающая значения переменных среды и команда FOR /F выведет их перечень с использованием команды echo .

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

%~I — из переменной %I удаляются обрамляющие кавычки («)
%~fI — переменная %I расширяется до полного имени файла
%~dI — из переменной %I выделяется только имя диска
%~pI — из переменной %I выделяется только путь к файлу
%~nI — из переменной %I выделяется только имя файла
%~xI — из переменной %I выделяется расширение имени файла
%~sI — полученный путь содержит только короткие имена
%~aI — переменная %I расширяется до атрибутов файла
%~tI — переменная %I расширяется до даты /времени файла
%~zI — переменная %I расширяется до размера файла
%~$path:I — проводится поиск по каталогам, заданным в переменной среды path, и переменная %I заменяется на полное имя первого найденного файла. Если переменная path не определена или в результате поиска не найден ни один файл, то этот модификатор заменяется на пустую строку.

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

~dpI — переменная I раскрывается в имя диска и путь
~nxI — переменная I раскрывается в имя файла и его расширение
~fsI — переменная I раскрывается в полный путь с короткими именами
~dp$path:I — проводится поиск по каталогам, заданным в переменной среды path, и переменная I раскрывается в имя диска и путь к первому найденному файлу.
~ftzaI — переменная I раскрывается в строку, подобную выдаваемой командой DIR

В приведенных выше примерах переменные I и path можно заменить на другие допустимые значения. Синтаксическая конструкция с символами ~ заканчивается допустимым именем переменной цикла FOR.

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

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

FOR %переменная IN (набор) DO (
команда1 [параметры]
команда2
. . .
)

Пример:

@echo OFF
for /L %%I in (1,1,5) DO (
echo FIRST%%I
ECHO LAST%%I
)

Обычно, в командных файлах команда FOR используется не только для разбора данных, но и их обработки, что требует использования переменных внутри цикла FOR. И здесь возникает проблема — изменения значений переменных не происходит, т.е. их применение внутри скобок невозможно. Подобное явление вызвано не логическими предпосылками, а всего лишь определенными особенностями реализации командного процессора CMD.EXE, и это нужно обязательно учитывать при обработке переменных внутри циклов команд FOR и IF. Другими словами, использование значений переменных внутри скобок, требует изменения стандартного режима интерпретации командного процессора. Разработчиками предусмотрена возможность запуска CMD.EXE с параметром /V:ON, что включает разрешение отложенного расширения переменных среды с применением символа восклицательного знака (!) в качестве разделителя. То есть, параметр /V:ON разрешает использовать !var! в качестве значения переменной var во время выполнения внутри циклов команд FOR и IF. Но на практике чаще используется возможность локального включения данного режима внутри командного файла специальной директивой:

Setlocal EnableDelayedExpansion

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

Setlocal EnableDelayedExpansion
@ECHO OFF
set VAR=before
if «%VAR%» == «before» (
set VAR=after
if «!VAR!» == «after» @echo Со знаком процента=%VAR% , Со знаком вопроса=!VAR!
)

Команда set VAR=after выполняется внутри подпрограммы, ограниченной скобками и, если убрать команду Setlocal EnableDelayedExpansion или не использовать для получения значения переменной VAR восклицательные знаки, ее значение останется старым ( тем, что было установлено до входа в цикл команды FOR ).

Данная особенность реализации командного процессора Windows нередко приводит к неожиданным результатам при использовании групп команд, объединенных скобками в конструкциях FOR и IF и тогда, когда значение какой-либо переменной изменяется внутри цикла с одной командой. Например, для получения списка файлов текущего каталога такой командный файл работать не будет:

set LIST=
for %%i in (*) do set LIST=%LIST% %%i
echo %LIST%

Вроде бы, логически все верно, но не учтена особенность обработки значений переменных. Значение переменной LIST внутри цикла команды FOR изменено не будет, оно останется пустым ( задано командой SET LIST= ), каким и было на начало цикла FOR. Команда SET LIST= %LIST% %%I должна в каждом цикле менять значение переменной LIST на текущее, плюс символ пробела, и плюс текущее значение переменной I, которое принимает значение имени файла в текущем каталоге. Синтаксически, команда верная, но из-за озвученной выше особенности реализации командного процессора — не работает, и значение переменной LIST не изменяется. Для того, чтобы это произошло, командный файл нужно изменить, таким же образом, как и в примере для группы команд:

Setlocal EnableDelayedExpansion
set LIST=
for %%i in (*) do set LIST=!LIST! %%i
echo %LIST%

Теперь, значение переменной LIST внутри цикла FOR будет изменяться, последовательно принимая значения имен файлов, разделенных пробелом ( set LIST=!LIST! %%i).

Эту особенность реализации CMD нужно учитывать и при использовании значений системных переменных внутри циклов, как например, переменной ERRORLEVEL:

IF !ERRORLEVEL!==0 вместо %ERRORLEVEL%==0

Весь список команд CMD Windows

Команда FOR в BAT файле. Пример числового цикла и цикла перебора файлов.

Команда for в виде числового цикла

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

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

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

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

Команда for для перебора файлов

Обычно команда 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 /r «C:\test» /d %%i in (*) do (

   echo Name of folder: %%i

   copy D:\filesKLIENT\Kontragent\111.grs «%%i»

)

Или с помощью фильтрации вывода команды dir:

for /f «delims=» %%i in (dir /b /s /a:d «C:\test») do (

   echo Name of folder: %%i

   copy D:\filesKLIENT\Kontragent\111.grs «%%i»

)

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

Обновлено: 06.03.2020, Computer Hope

Пакетный файл — это набор команд командной строки MS-DOS и Windows, используемых на компьютере. Если вы знакомы с командной строкой, вы можете использовать свои предыдущие знания, чтобы помочь вам создать командный файл. Если вы новичок в командной строке или нуждаетесь в обновлении, см .: Как использовать командную строку Windows (DOS).

Пакетные команды

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

Подсказка

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

@

Символ at не отображает текст после символа. @ Чаще всего используется как @ECHO OFF только для отображения вывода команды.

% 1

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

 ECHO Привет% 1 

В пакетном файле, содержащем указанную выше строку, введите myname (имя файла bat), а затем свое имя, как показано ниже.

 мое имя Боб 

Будет выведено «Hello Bob», потому что «Bob» — это первый совпавший текст.

Подсказка

Вы можете продолжить переход к% 2,% 3 и т. Д. Например, вы можете использовать% 2 в качестве отчества и% 3 в качестве фамилии.

::

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

: LABEL

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

ЗВОНИТЕ

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

ВЫБОР И НАБОР

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

CLS

Как и команда DOS, cls очищает экран. Запустите команду cls в верхней части командного файла, чтобы очистить все предыдущие команды или выходные данные. Это действие упрощает поиск и чтение выходного командного файла.

ECHO

Вывести сообщение в командный файл.Например, ECHO Hello World при выполнении выводит на экран Hello World .

Примечание

Без @ECHO OFF в начале командного файла вы также получите «ECHO Hello World» и «Hello World».

Подсказка

Если вы хотите создать пустую строку, введите ECHO. добавление точки в конце создает пустую строку.

ВЫХОД

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

GOTO

Переход к метке или разделу командного файла. Функция goto упрощает возврат к началу командного файла, если выполняется условие или возникает ошибка.

IF

Используется для проверки наличия определенного условия. Если это условие существует, он выполняет эту функцию. См. Команду if для получения дополнительной информации об этой команде.

ПАУЗА

Предложить пользователю нажать любую клавишу для продолжения.

REM

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

ПЕРЕКЛЮЧЕНИЕ

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

СТАРТ

Используется для открытия программ Windows. Например, START C: \ WINDOW \ CALC запустит калькулятор Windows. Команду start также можно использовать для запуска любого файла, который распознает Windows. Например, вы можете запустить фильм или аудиофайл в пакетном файле, чтобы запустить проигрыватель по умолчанию для этого файла.

Примечание

В Windows 3.x необходимо использовать команду WIN. Например, WIN C: \ Windows \ CALC.EXE запустит Windows, а затем Калькулятор после завершения загрузки Windows.

ДРУГИЕ КОМАНДЫ

Как использовать команды пакетного файла Windows для автоматизации повторяющихся задач

До того, как Windows стала нашим любимым графическим интерфейсом, все делалось с помощью команд. Некоторые из наших читателей, возможно, помнят использование команд MS-DOS для выполнения самых мелких задач. В наши дни вы все еще можете использовать команды для автоматизации задач и повышения производительности.

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

Что такое командный файл?

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

Как создать командный файл

Вы пишете командные файлы в виде обычного текста. Вы можете использовать любой текстовый редактор, который вам нравится, но стандартное приложение «Блокнот» отлично справляется со своей задачей. Если вы создаете сложный пакетный файл, вам пригодятся дополнительные функции Notepad ++. Но пока вы можете придерживаться Блокнота, так как каждый приведенный ниже пример командного файла был протестирован с использованием этой программы.

После того, как вы закончите ввод команд командного файла, перейдите в меню « Файл»> «Сохранить как » и дайте командному файлу соответствующее имя.После сохранения вы можете изменить расширение файла с .txt на .bat , что изменит тип файла. Для этого щелкните файл правой кнопкой мыши и выберите Переименовать , затем измените расширение файла, как указано выше. Либо выделите файл и нажмите F2 , затем измените расширение файла,

Полезные командные файлы Windows для автоматизации

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

1. Откройте несколько программ с помощью командного файла

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

В приведенном ниже примере я открываю браузер Google Chrome, документ Word, над которым я работаю, и VMware Player.

Откройте новый текстовый файл и введите:

  @echo off 
cd "C: \ Program Files \ Google \ Chrome \ Application \"
start chrome.exe
start - "C: \ Program Files \ Microsoft Office \ Office15 \ WINWORD.EXE"
"C: \ Work \ MUO \ How to Batch Rename.docx "
cd" C: \ Program Files (x86) \ VMware \ VMware Player "
start vmplayer.exe
Exit

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

  • @echo отображает команду, которая в данный момент выполняется в командной оболочке. Мы отключили этот от .
  • cd изменяет каталог.
  • start делает очевидное и запускает программу.

2.Удаление файлов старше определенного времени с помощью пакетного файла

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

В первом примере в указанной папке удаляются файлы старше трех дней:

  forfiles / p "C: 
ome \ file
ame \ here" / s / m * / d -3 / c "cmd / c del @path"

Во втором примере удаляются только файлы с расширением.docx старше трех дней:

  forfiles / p "C: 
ome \ file
ame \ here" / s / m * .docx / d -3 / c "cmd / c del @path"

Здесь используются следующие команды и переключатели пакетного файла:

  • forfiles позволяет нам использовать команды для каждого файла в местоположении, т.е. команды будут применяться к каждому файлу, соответствующему аргументам команды
  • / p подробно описывает путь для начала поиска i.е. каталог, из которого вы хотите удалить файлы
  • / s дает команду на поиск в подкаталогах
  • / m указывает команде использовать заданную маску поиска. В первом примере мы использовали подстановочный знак «*» , а во втором — .docx .
  • / d-3 — установка времени.Увеличивайте или уменьшайте в зависимости от ваших требований
  • / c del @path — аспект удаления команды

3. Автоматизация резервного копирования системы с помощью пакетного файла

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

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

Автоматизация резервного копирования пакетных файлов: метод № 1

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

  @echo off 
ROBOCOPY C: \ your \ filename \ go \ здесь C: \ your \ backup \ location \ go \ here / LOG: backuplog.txt
пауза

Теперь перейдите к File> Save As , назовите файл systembackup.bat и завершите сохранение.

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

Автоматизация резервного копирования пакетных файлов: метод № 2

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

  @echo off 
:: variables
set drive = X: \ Backup
set backupcmd = xcopy / s / c / d / e / h / i / r / y
echo ### Резервное копирование моих документов ...
% backupcmd% "% USERPROFILE% \ My Documents" "% drive% \ My Documents"
echo ### Резервное копирование избранного ...
% backupcmd% "% USERPROFILE% \ Favorites" "% drive% \ Favorites"
echo ### Резервное копирование электронной почты и адресной книги ...
% backupcmd% "% USERPROFILE% \ Application Data \ Microsoft \ Address Book" "% drive% \ Address Book"
% backupcmd% "% USERPROFILE% \ Local Settings \ Данные приложения \ Identities ""% drive% \ Outlook Express "
echo ### Резервное копирование электронной почты и контактов (MS Outlook)...
% backupcmd% "% USERPROFILE% \ Local Settings \ Application Data \ Microsoft \ Outlook" "% drive% \ Outlook"
echo ### Резервное копирование реестра ...
, если не существует "% drive% \ Registry "mkdir"% drive% \ Registry "
, если существует"% drive% \ Registryegbackup.reg "del"% drive% \ Registryegbackup.reg "
regedit / e"% drive% \ Registryegbackup.reg "
echo Резервное копирование завершено!
@ пауза

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

Сначала укажите место, куда вы хотите скопировать файлы, используя команду set drive = X: \ Backup . В этом примере диск установлен на «X». Вы должны изменить эту букву на любую букву вашего внешнего резервного диска.

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

  • / с копирует системные файлы
  • / c выполняет команду, указанную в строке, затем завершает
  • / d позволяет изменять диски и каталоги
  • / e копирует пустые каталоги
  • / h копирует скрытые файлы
  • / i , если место назначения не существует, и вы копируете более одного файла, / i предполагает, что местом назначения должен быть каталог
  • / r перезаписывает файлы только для чтения
  • / y подавляет запросы, подтверждающие, что вы хотите перезаписать файлы, доступные только для чтения

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

 % backupcmd% "... исходный каталог ... ""% диск% \ ... целевой каталог ... " 

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

 % backupcmd% "% USERPROFILE%" "% drive% \% UserName% - profile"  
Автоматизация резервного копирования пакетных файлов: метод № 3

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

В новом текстовом файле введите следующие команды:

  Robocopy "C: \ your \ folder" "X: \ your \ backup \ folder" / MIR 
Shutdown -s -t 30

Сохраните командный файл, не забудьте изменить расширение файла на .bat . Здесь используются следующие дополнительные команды пакетного файла:

  • Robocopy / MIR : Вы уже пробовали использовать robocopy.Дополнительный параметр / mir гарантирует, что каждая папка и подпапка также копируются.
  • Shutdown -s -t: Команда shutdown сообщает Windows, что вы хотите завершить работу, а -s подтверждает, что это полное выключение (а не перезапуск или переход в режим гибернации). Параметр -t позволяет вам установить определенный промежуток времени до того, как система начнет процесс выключения, определяемый в секундах.В этом примере таймер установлен на 30 секунд, вы можете изменить его на все, что захотите. Удаление параметра таймера приведет к немедленному запуску процесса выключения.

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

4. Измените свой IP-адрес с помощью командного файла

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

Вот как вы создаете пакетный файл для переключения на статический IP-адрес, а другой — для переключения обратно на динамический:

Пакетный файл для переключения на статический IP-адрес

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

  IP-интерфейс netsh устанавливает адрес "LAN" статический "xxx.xxx.xxx.xxx "" xxx.xxx.xxx.x "" xxx.xxx.xxx.x " 

Если первая серия « x’s » — это ваш требуемый статический IP-адрес, вторая — это маска сети / подсети, а третья — ваш шлюз по умолчанию.

Пакетный файл для переключения на динамический IP-адрес

Если вы хотите вернуться к динамическому IP-адресу, вы можете использовать этот командный файл.

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

  netsh int ip set address name = "LAN" source = dhcp  

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

5. Уложите детей спать с помощью командного файла

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

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

  @echo off 
: W
Если% time% == 23:30:00.00 goto: X
: X
shutdown.exe / s / f / t / 120 / c «ИДИТЕ СЕЙЧАС В КРОВАТЬ !!!»

Здесь компьютер постоянно проверяет, не сейчас ли половина одиннадцатого. Когда время совпадает, появляется сообщение «ИДИТЕ СПАТЬ ПРЯМО СЕЙЧАС !!!» будет отображаться вместе с таймером обратного отсчета 120 с. У 120-х должно быть достаточно времени, чтобы сохранить любую игру, в которую они играют, или свою работу, прежде чем компьютер выключится.

Чтобы остановить обратный отсчет, нажмите Windows Key + R .(Конечно, детям этого не говорите!)

6. Пакетное переименование и массовое удаление файлов

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

Связанный: Как пакетное переименование и массовое удаление файлов в Windows

7.Сыграйте в Pokémon в пакетном файле

Этот командный файл не имеет ничего общего с производительностью. Фактически, это полная противоположность. Если вы подвержены игровой зависимости, связанной с покемонами, вам следует пропустить эту игру, потому что это, по сути, Pokémon Red в текстовой форме.

Если вы не хотите пропустить, вы можете взять PokéBatch и начать играть. Загрузите текстовый файл, затем измените расширение файла с .txt с на .bat , и все готово.

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

Автоматизируйте свою жизнь с помощью пакетных файлов Windows!

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

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

PowerShell — это то, что вы получили бы, если бы пересекли командную строку с пакетными сценариями, добавили некоторые дополнительные функции и подняли все это на несколько ступеней.Вот несколько причин, по которым вам стоит попробовать.

Читать далее

Об авторе Гэвин Филлипс (Опубликовано 924 статей)

Гэвин — младший редактор отдела Windows and Technology Explained, постоянный автор Really Useful Podcast и регулярный обозреватель продуктов.У него есть степень бакалавра (с отличием) в области современного письма с использованием методов цифрового искусства, разграбленных на холмах Девона, а также более десяти лет профессионального писательского опыта. Он любит много пить чая, настольные игры и футбол.

Более От Гэвина Филлипса
Подпишитесь на нашу рассылку новостей

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться

: Глава 14.Командная строка :: Часть II: Краткий справочник :: Windows Vista в двух словах :: Продукты Microsoft :: eTutorials.org

Большинство книг по Windows рассматривают командные файлы, как если бы они были своего рода скелетом в шкафу или сумасшедшей тётей, с которой никому не хотелось бы встречаться. Хотя это правда, что командные файлы гораздо менее важны, чем они были в DOS и более ранних версиях Windows, они все же могут обеспечивать полезную функциональность.

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

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

14.4.1. Создание командных файлов

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

При присвоении имени командному файлу убедитесь, что вы не используете имя, которое уже используется внутренней командой командной строки (например, dir, copy или cd) или файлом .com или .exe в пути поиска. Причина этого в том, что когда командная строка выполняет программы, она сначала ищет файл.com, а затем расширение .exe перед окончательным выполнением файла с расширением .bat. Например, если у вас есть файл с именем work.exe и вы создаете work.bat в том же каталоге, ваш командный файл не будет выполняться, если вы также не введете расширение имени файла.

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


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

Вот основы программирования пакетных файлов:

  • Каждая команда в пакетном файле должна находиться в отдельной строке. Последняя командная строка в файле должна заканчиваться символом возврата каретки.Команды такие же, как и те, которые вы вводите последовательно в командной строке.

  • Имя самого командного файла хранится в переменной% 0. Это позволяет вам делать такие вещи, как иметь временный командный файл, который удаляется сам по себе. Имя сохраняется в том виде, в каком оно было введено в командной строке, поэтому, если вы набрали myfile.bat,% 0 будет myfile.bat, но если вы наберете c: \ batch \ myfile,% 0 будет c: \ batch \мой файл.

  • Пакетный файл, запускаемый из командной строки или двойным щелчком по его значку, открывает окно командной строки во время его выполнения; однако командный файл, запускаемый из существующего окна командной строки, будет выполняться внутри этого окна.

  • Щелкните меню управления и выберите «Свойства» (подробности см. В разделе «Использование командной строки» ранее в этой главе), чтобы управлять внешним видом окна командной строки по умолчанию. Чтобы изменить эти параметры для отдельного пакетного файла, создайте ярлык Windows для пакетного файла, щелкните новый ярлык правой кнопкой мыши и выберите «Свойства».

  • Лист «Свойства» для ярлыка фактически добавляет несколько параметров, которые обычно недоступны через меню управления.Например, «Запуск с ярлыка в» позволяет выбрать начальный рабочий каталог, а «Запуск с помощью ярлыка» позволяет свернуть запуск командного файла.

  • Вы можете остановить запущенный командный файл, нажав Ctrl-Break или Ctrl-C; в его окне DOS появится следующее сообщение: «Завершить пакетное задание (Д / Н)?».

  • По умолчанию каждая команда в пакетном файле выводится в окно командной строки. Чтобы выполнить команду без вывода сообщений, поставьте перед ней символ @. Кроме того, вы можете отключить эхо команды, введя @echo off в начале командного файла.

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

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

14.4.3. «Почему» и «Когда» использования пакетных файлов

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

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

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

@ эхо выключено
если "% 1" == "" перейти, пропустить
mkdir% 1 \ цифры
mkdir% 1 \ источники
mkdir% 1 \ старый
скопировать c: \ templates \ mainfile.doc% 1
скопировать c: \ templates \ other.doc% 1
скопируйте c: \ templates \ image.tif% 1 \ цифры
:пропускать
 

Создайте новую папку в проводнике, а затем перетащите ее в этот пакетный файл (или добавьте пакетный файл в меню «Отправить»). Подкаталоги, называемые числами, источниками и старым, будут созданы внутри целевого объекта (когда вы перетаскиваете что-либо в пакетный файл, его имя помещается в переменную% 1), а три файла шаблона копируются в новые каталоги.Вуаля, вы сэкономили около минуты на нажатие и перетаскивание.

Конструкция:

если "% 1" == "" перейти, чтобы пропустить
 

— полезный метод проверки ошибок. Вы можете использовать оператор if для проверки нулевых аргументов (или других аналогичных условий) и, если они встречаются, либо выдать сообщение об ошибке, либо просто выйти. (Этот пример завершится после перехода к метке: skip, потому что больше нет команд для выполнения.)

Вы также можете использовать командные файлы, чтобы обойти некоторые ограничения Windows Vista.Например, проводник не позволяет распечатать распечатанный список содержимого папки. Вы можете сделать это из командной строки, набрав:

dir> lpt1:
 

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

@ эхо выключено
если "% 1" == "" перейти, пропустить
каталог% 1> lpt1:
:пропускать
 

Если у вас нет параллельного принтера, вы также можете заменить lpt1: на что-то вроде c: \ windows \ desktop \ dir-list.txt, чтобы вместо этого вывести список каталогов в текстовый файл (а затем распечатать его с помощью notepad / p filename ) или создать цикл, чтобы командный файл мог автоматически повторяться для нескольких аргументов имени каталога.

14.4.4. Переменные

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

Пакетный файл может принимать такие аргументы, как имена файлов или параметры. В переменных% 1 tHRough% 9 хранится до девяти аргументов. Например, следующая строка в командном файле:

копировать% 1% 2
 

означает, что командный файл скопирует имя файла, указанное в первом аргументе, в имя, указанное во втором аргументе.Используйте эту функцию вместе с оператором if, например, для отображения экрана справки, когда «пользователь» включает /? вариант. Переменная% * возвращает строку со всеми аргументами (например,% 1% 2% 3% 4% 5 …), которая может быть удобным способом передачи всех аргументов командного файла в другой командный файл или команду.

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

% ~ var

Раскрывает% var , удаляя все окружающие кавычки.

% ~ f var

Расширяет% var до полного имени пути (полезно, если% var ссылается на файл в текущем каталоге).

% ~ d var

Расширяет% var только до буквы диска.

% ~ p var

Расширяет% var только до пути.

% ~ n var

Заменяет% var только на имя файла.

% ~ x var

Расширяет% var только до расширения файла.

% ~ с var

Расширенный путь содержит только короткие имена.

% ~ var

Расширяет% var до атрибутов файла.

% ~ t var

Заменяет% var на дату / время файла.

% ~ z var

Увеличивает% var до размера файла.

% ~ $ директория : var

Выполняет поиск в каталогах, перечисленных в переменной dir , и раскрывает% var до полного имени первого найденного каталога.Если каталог не определен или файл не найден поиском, возвращается пустая строка. Если вы укажете $ PATH для dir , будет использоваться путь поиска команд (см. «Путь» ранее в этой главе).

Эти операторы чаще всего используются с аргументами командной строки; например, используйте% ~ z 2 в пакетном файле, чтобы отобразить размер файла, указанного в% 2. Эти операторы можно комбинировать; например,% ~ nx1 заменяет% 1 только именем файла и расширением, а% ~ ftza7 расширяет% 7 до выходной строки, подобной директории.Если переменная% var не определена или не содержит имени существующего файла, будет возвращена пустая строка.

14.4.5. Дополнительные команды, используемые в пакетных файлах

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

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

Использование

вызов [ имя файла ] [ аргументов ]
 

Описание

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

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

Возможны следующие варианты звонка:

имя файла

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

аргументы

Задает любые аргументы командной строки, передаваемые в целевой пакетный файл

Примеры

Следующий родитель.bat вызывает child.bat, а затем возвращает управление самому себе:

parent.bat:

@ эхо выключено
cls
сначала позвоните child.bat
установить сначала =% inputvar%
call child.bat Second
установить второй =% inputvar%
echo Вы набрали% first%, а затем% second%
 

child.bat:

set / p inputvar = Введите параметр% 1:
эхо Спасибо.
 

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

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

родитель.летучая мышь:

@ эхо выключено
для %% j в (1,2,3,4,5) вызовите child.bat
 

child.bat:

set / p inputvar = Введите опцию #% j%:
echo Вы набрали% inputvar% - хорошо.
 

Банкноты


Позволяет выбрать элемент из списка вариантов, а затем возвращает индекс этого выбора.

Использование

выбор [/ c варианты] [/ n] [/ cs] [/ t тайм-аут / c выбор] [/ m текст]
 

Описание

Возможны следующие варианты выбора:

/ c вариантов

Определяет список вариантов для создания.

/ п

Скрывает список вариантов в подсказке. Однако отображается сообщение перед подсказкой, и варианты по-прежнему активны, даже если список скрыт.

/ CS

Разрешает выбор с учетом регистра. По умолчанию при выборе регистр не учитывается.

/ t таймаут

Количество секунд для паузы перед тем, как будет сделан выбор по умолчанию.Допустимые значения: от 0 до 9999. Если указан 0, паузы не будет и будет выбран вариант по умолчанию.

/ D знак

Задает выбор по умолчанию после тайм-аута секунд. символ должен быть в наборе вариантов, заданном параметром / c, а также должен указывать тайм-аут с / t.

/ М текст

Задает сообщение, которое будет отображаться перед подсказкой.Если он не указан, при выборе отображается только подсказка.


См. «Если» далее в этой главе.


Повторить указанную команду любое количество раз.

Использование

для [/ d] %%  переменной  в ( установить ) выполните команду   [ аргументов ]
for / r [ путь ] %%  переменная  in ( установить ) do  command  [ arguments ]
для / l %%  переменной  в (начало, шаг, конец) выполните команду   [ аргументов ]
 

(in и do не являются параметрами, а являются просто частью синтаксиса; если они не указаны, произойдет ошибка.)

Описание

Используйте эту команду для создания циклов в пакетном файле. Цикл for — это программная конструкция, которая позволяет вам повторять команду для списка элементов (например, имен файлов). Вы указываете произвольное имя переменной и набор значений для повторения. Для каждого значения в наборе команда повторяется.

для использования следующих опций:

команда [ аргументов ]

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

%% переменная

Однобуквенное имя переменной, которое назначается один за другим элементам, перечисленным в наборе , . Хотя переменная обрабатывается как стандартная переменная среды (см. «Set» ранее в этой главе), ее имя чувствительно к регистру (%% j отличается от %% J) и может состоять только из одной буквы.Также обратите внимание на использование двух предшествующих знаков процента. Если команда for вводится непосредственно из командной строки (а не из командного файла), используйте здесь только один знак процента.

комплект

Последовательность элементов, через которую выполняется команда for. Элементы разделяются пробелами и могут быть файлами, строками или числами. При указании файлов можно использовать подстановочные знаки. См. Подробности в разделе «Примеры» ниже. Используйте параметр / l для более традиционного формата start , step , end .

/ д

Указывает на сопоставление с именами каталогов вместо имен файлов, если set содержит подстановочные знаки. Не может использоваться с параметром / l или / r.

/ л

Указывает, что set принимает форму start , step , end , что позволяет указать диапазон чисел и приращение вместо того, чтобы перечислять каждый элемент.Параметр / l позволяет имитировать более традиционное использование for в более продвинутых языках программирования. См. Подробности в разделе «Примеры» ниже.

/ r [путь]

Рекурсивно выполняет команду для каждого каталога и подкаталога в пути пути . Если путь опущен, используется текущий каталог. Без / r файлы, указанные в наборе , относятся только к текущему каталогу. Параметр / r указывает «пройти» по дереву каталогов с корнем , путь и повторить весь цикл в каждом каталоге обнаруженного дерева.Если установить — это всего лишь одна точка (.), For будет просто перечислять все каталоги в дереве.

Примеры

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

для %% n в (камень, ножницы, бумага) сделайте echo %% n
 

Создайте набор пронумерованных каталогов (например, ch2, ch3, ch4, ch5 и ch5):

для %% n в (1 2 3 4 5) выполните md ch %% n
 

Вот альтернативный способ сделать то же самое с параметром / l:

для / l %% n в (1,1,5) do md ch %% n
 

Здесь первая 1 представляет начальное число, вторая 1 представляет приращение (или шаг), а 5 представляет конец.Вот еще несколько примеров этого синтаксиса:

for / l %% n in (0,5,100) do echo %% n
for / l %% n в (100, -2,0) do echo %% n
 

Поскольку цикл for работает только для одной команды (и он не работает с goto), вам нужно сделать что-то вроде этого, чтобы запустить несколько команд с for:

для %% f в (1 2 3 4 5) вызовите loop1.bat %% f
эхо сделано!
 

loop1.bat тогда может выглядеть так:

если файл% 1 не существует, пропустить
скопировать файл% 1 c: \ backup
:пропускать
 

Обратите внимание, как переменная %% f передается в loop1.bat в качестве параметра командной строки, а затем на него ссылается% 1.

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

для %% j в (a.txt b.txt c.txt) скопируйте %% j a:
 

Следующие утверждения эквивалентны:

для %% x в (* .txt) введите %% x
введите * .txt
 

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

Список всех каталогов (с полными путями) на жестком диске:

для / r c: \ %% i в (.) do echo %% i
 

Скопируйте все файлы .doc во все подкаталоги c: \ Users \% USERNAME% \ Documents на диск D:

для / r "c: \ Users \% USERNAME% \ Documents" %% i в (* .doc) скопируйте %% i d:
 

Банкноты

  • При перенаправлении вывода цикла for в файл вы захотите использовать >> (добавить в файл), а не>. В противном случае вы сохраните только последнюю итерацию цикла.

  • Команды, выполняемые оператором for, будут отображаться на экране, если вы не введете команду @echo off заранее или не поставите перед командой символ @.Подробнее см. «Echo» ранее в этой главе.

  • Команда for также поддерживает довольно запутанный параметр / f; типа для /? в командной строке для получения дополнительной информации.


Переход к отмеченной строке в пакетной программе.

Использование

goto  этикетка 
...
:  этикетка 
GOTO: EOF
 

Описание

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

метка , любая строка текста (без пробелов) после двоеточия, отмечает начало раздела пакетного файла и представляет собой цель для команды goto. Если вы наберете goto: eof (обратите внимание на двоеточие, обычно здесь не используется), он перейдет к концу командного файла (eof = конец файла).

Если ваша пакетная программа не содержит метки, указанной вами после goto, пакетная программа останавливается и отображает сообщение «Метка не найдена». Однако вы можете указать метки, которые не отображаются в командах goto.

Примеры

Отформатируйте дискету в дисководе a: и отобразите соответствующее сообщение об успехе или неудаче:

@ эхо выключено
формат a:
если нет errorlevel 1 goto пропустить
echo Произошла ошибка во время форматирования.
выход / б
:пропускать
echo Диск в дисководе а отформатирован успешно!
 

См. Также

«если»


Выполнить команду при соблюдении определенных условий.

Использование

если [не]  строка1  ==  строка2 команда  [ аргументов ]
if [/ i]  строка1 оператор сравнения строка2 команда  [ аргументы ]
если [не] существует  имя файла команда  [ аргументов ]
if [not] errorlevel  n команда  [ аргументов ]
 

Описание

Условное ветвление позволяет вашему пакетному файлу проверить, является ли условие истинным, и если это так, он инструктирует пакетный файл выполнить команду или продолжить выполнение в другом месте в пакетном файле (с помощью команды goto).Вы можете использовать следующие параметры с командой if:

команда [ аргументов ]

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

не

Указывает, что команда должна выполняться, только если условие ложно; не действует с compare-op .

строка1 == строка2

Задает истинное условие, если указанные текстовые строки совпадают. String1 и string2 должны быть заключены в кавычки или круглые скобки.

строка1 операция сравнения строка2

Выполняет более гибкое сравнение, чем строка1 == строка2 . Термин compare-op может принимать одно из следующих значений:

EQU

Равно

NEQ

Не равно

LSS

Менее

LEQ

Меньше или равно

GTR

Больше

GEQ

Больше или равно

/ i

Задает сравнение без учета регистра; используется только с compare-op .

существует имя файла

Задает истинное условие, если указанный файл существует.

уровень ошибки n

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

Примеры

Поскольку пакетные файлы могут принимать параметры (хранящиеся в% 1,% 2,% 3 и т. Д.), Оператор if жизненно важен для интерпретации этих параметров.В начале такого командного файла могут появиться следующие операторы:

if "% 1" == "" echo Вы не указали параметр
если "% 1" == "/?" пойти помочь
if "% 1" == "hullabalooza" goto doit
 

Следующие утверждения эквивалентны:

если не "% 1" == "" echo Вы, должно быть, что-то набрали.
if "% 1" NEQ "" echo Вы, должно быть, что-то набрали.
 

Следующий командный файл проверяет текущий каталог на наличие файла form.bat.Если он его найдет, появится сообщение «Он существует!» отображается, а если нет, «Файл не существует». отображается:

@ эхо выключено
если существует form.bat перейти к прыжку
goto пропустить
:Прыгать
эхо Оно существует!
Пауза
выход / б
:пропускать
echo Файл не существует.
Пауза
выход / б
 

Когда программа завершается или команда завершается, она возвращает операционной системе целочисленное значение, называемое уровнем ошибок. Обычно уровень ошибки равен нулю (0), если операция прошла успешно, или большему числу, если возникла проблема.Оператор if errorlevel проверяет, больше ли значение errorlevel заданному числу:

.
найти / i "перспектива" c: \ stuff \ tips.txt
если ошибка уровня 2 перейти к ошибке
если errorlevel 1 goto nomatch
если errorlevel 0 перейти к совпадению
:соответствовать
echo Совпадение найдено!
перейти к концу
:не совпадает
echo К сожалению, совпадение не найдено.
перейти к концу
:ошибка
echo Ack! Произошла ошибка!
:конец
Пауза
 

Обратите внимание, что операторы if errorlevel упорядочены так, что сначала проверяются более высокие числа; если порядок был изменен, первый (при уровне ошибки 0) всегда будет возвращать истину, потому что уровень ошибки всегда больше или равен нулю.

Также важно учитывать возможность того, что ни один из операторов if не встретит истинного условия; в предыдущем примере, если все проверки уровня ошибок завершились неудачно, выполнение просто продолжалось бы в разделе: match.

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

если существует% 1 del% 1
else echo К сожалению,% 1 не найден
 

Пакетные файлы в Windows Vista также поддерживают if…другие блоки, например:

если существует% 1 (
 echo Я собираюсь удалить% 1. Нажмите Control-C, чтобы отменить
 Пауза
 del% 1
) еще (
 echo Я не смог найти% 1. Очень плохо для тебя.
 выход / б
)
 

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

См. Также

«for» и «goto»


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

Описание

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

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

Примеры

Предложить пользователю поменять диски в одном из дисков в пакетной программе:

@ эхо выключено
echo Вставьте следующий диск в дисковод A и
Пауза
 

При выполнении этого командного файла появится следующее сообщение:

Вставьте следующий диск в дисковод A и
Нажмите любую клавишу для продолжения ...
 

Нечто подобное тоже встречается:

@ эхо выключено
эхо Нажмите Ctrl-C, чтобы отменить, или
Пауза
 


Вставить комментарии («примечания») в пакетный файл. Строки, начинающиеся с rem, будут проигнорированы при выполнении командного файла.

Использование

rem [ комментарий ]
 

Описание

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

Команда rem также полезна для отключения команд. Просто добавьте rem прямо перед командой, чтобы отключить ее.

Примеры

Пакетный файл, в котором используются примечания для объяснения и отключения команды:

@ эхо выключено
rem Эта пакетная программа может однажды изменить каталог.
rem Но не раньше, чем я удалю rem перед командой cd.rem Это называется mydir.bat.
rem cd \ batch \ ch3
 

Этот пример, если бы он был выполнен, абсолютно ничего не сделал бы.

См. Также

«эхо»


Удалите переменную, содержащую первый аргумент командной строки (% 1), и переместите оставшиеся аргументы.

Использование

сдвиг
 

Описание

Используйте команду shift, если вы хотите циклически перебрать все аргументы командной строки, указанные при запуске командного файла.Когда встречается оператор shift, значение, хранящееся в% 2, назначается% 1, значение, хранящееся в% 3, назначается% 2 и так далее. Значение, сохраненное в% 1 перед оператором сдвига, потеряно. Это особенно полезно при обработке циклов.

Примеры

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

@ эхо выключено
rem MTYPE.ЛЕТУЧАЯ МЫШЬ
Пример rem: mtype foo.txt bar.txt * .bat
:петля
если "% 1" == "" выход / b
для %% f в (% 1) введите %% f
сдвиг
Пауза
цикл goto
 

Оператор if проверяет наличие пустого аргумента (что означает, что сдвиг исчерпал запас аргументов) и завершает цикл при обнаружении.

Банкноты

  • Обычно количество аргументов командной строки ограничено девятью (от% 1 до% 9), но сдвиг позволяет пакетному файлу вместить больше.

  • Если вы используете подстановочный знак в командной строке, он передается в пакетный файл как один аргумент (например, *. *), Который можно использовать как есть. Он не расширяется в первую очередь, как в случае с оболочками Unix, поэтому вы не можете выделить его в сценарии и использовать каждое совпадающее имя файла отдельно (к счастью, команда FOR расширяет подстановочные знаки, поэтому вы можете использовать * .bat в качестве аргумент только что показанного командного файла).


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

Использование

тайм-аут / t [число] \ без перерыва
 

Описание

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

/ т

Задает количество секунд ожидания. Допустимый диапазон от -1 до 99 999 секунд.Значение -1 означает неопределенное время ожидания нажатия клавиши.

/ без перерыва

Игнорировать нажатия клавиш и ждать указанное время.

Примеры

Подождите 35 секунд перед выполнением следующей команды:

тайм-аут / т 35
 

Подождите 50 секунд и игнорируйте любые нажатые клавиши перед выполнением следующей команды:

тайм-аут / т 50 / без перерыва
 

Банкноты


Команды командного файла — Aticleworld

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

Примечание. Команды пакетного файла не чувствительны к регистру.

АССОК

Отображает или изменяет ассоциации расширений имен файлов. Если используется без параметров, assoc отображает список всех текущих ассоциаций расширений имен файлов.

Примечание: Эта команда поддерживается только в CMD.EXE и недоступна в PowerShell.

Пример:

 @ эхо ВЫКЛ.
ассоциированный .txt
 

Выход:

 .txt = текстовый файл 

АТРИБ

Команда

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

Пример ,

Чтобы отобразить атрибуты файла с именем test, который находится в текущем каталоге, введите:

Чтобы назначить атрибут «Только для чтения» файлу с именем test.txt, введите:

 ATTRIB + r test.txt 

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

 @ эхо ВЫКЛ.
ATTRIB -r b: \ public \ *. * / S 

AT

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

ARP

Команда ARP используется для отображения и изменения записей в кэше протокола разрешения адресов (ARP).Кэш ARP содержит одну или несколько таблиц, которые используются для хранения IP-адресов и их разрешенных физических адресов Ethernet или Token Ring.

Существует отдельная таблица для каждого сетевого адаптера Ethernet или Token Ring, установленного на вашем компьютере. При использовании без параметров arp отображает справочную информацию.

Пример:

Чтобы отобразить таблицы кэша arp для всех интерфейсов, введите:

 арп / а 

Для отображения таблицы кэша arp для интерфейса, которому назначен IP-адрес 10.0.0.99, тип:

CD

Компакт-диск с пакетными командами помогает перемещаться по различным каталогам и изменять каталоги или отображать текущий каталог.

Пример,

 @ эхо выкл.
Rem Компакт-диск без каких-либо параметров используется для отображения текущего рабочего каталога.
компакт диск
Rem Изменение пути к программным файлам
cd \ Program Files
компакт диск
Rem Изменение пути к программным файлам
cd% ПОЛЬЗОВАТЕЛЬСКИЙ ПРОФИЛЬ%
компакт диск
Rem Переход в родительский каталог
компакт диск..
компакт диск
Rem Переход в родительский каталог на два уровня выше
компакт диск..\..
cd 

Выход:

 C: \ Пользователи \ Администратор
C: \ Program Files
C: \ Пользователи \ Администратор
C: \ Пользователи
C: \ 

ЧКДСК

Пакетная команда CHKDSK используется для проверки ошибок на диске.

Пример:

 @ эхо ВЫКЛ.
ЧКДСК 

ВЫБОР

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

Синтаксис,

выбор [/ c [ <…>]] [/ n] [/ cs] [/ t / d ] [/ m <«Text»>]

Параметры:
Параметр Описание
/ c <Выбор1> <…> Задает список вариантов для создания. Допустимые варианты: a – z, A – Z, 0–9 и расширенные символы ASCII (128–254).Список по умолчанию — «YN», который отображается как [Y, N] ?.
/ п. Скрывает список вариантов, хотя варианты по-прежнему активны, а текст сообщения (если указан в / m ) по-прежнему отображается.
/ CS Указывает, что варианты чувствительны к регистру. По умолчанию варианты выбора не чувствительны к регистру.
/ t <Тайм-аут> Задает количество секунд для паузы перед использованием выбора по умолчанию, указанного в / d .Допустимые значения: от 0 до 9999 . Если для / t установлено значение 0 , выбор не приостанавливается перед возвратом выбора по умолчанию.
/ d <Выбор> Указывает вариант по умолчанию для использования после ожидания в секундах, заданном параметром / t . Выбор по умолчанию должен быть в списке вариантов, указанном в / c .
/ m <«Текст»> Задает сообщение, отображаемое перед списком вариантов.Если / m не указан, отображается только запрос выбора.
/? Отображает справку в командной строке.

Примечание: Переменная среды ERRORLEVEL установлена ​​на индекс ключа, который пользователь выбирает из списка вариантов. Первый вариант в списке возвращает значение 1, второй — значение 2 и так далее. Если пользователь нажимает клавишу, выбор которой недопустим, при выборе издается предупреждающий звуковой сигнал.Если choice обнаруживает состояние ошибки, он возвращает значение ERRORLEVEL, равное 255. Если пользователь нажимает CTRL + BREAK или CTRL + C, choice возвращает значение ERRORLEVEL, равное 0.

Пример сценария,

В приведенном ниже сценарии я создал список из A, B и C. Здесь команда выбора вызовет список и попросит пользователя выбрать символ из списка.

 @ECHO OFF
:НАЧИНАТЬ
CLS
ВЫБОР / N / C: ABC / M «Выбрать символ (A, B или C)»
ЕСЛИ ОШИБКА == 3 НАЙТИ ТРИ
ЕСЛИ УРОВЕНЬ ОШИБКИ == 2 ПОЛУЧИТЬ ДВА
ЕСЛИ ОШИБКА == 1 НАЙТИ ОДИН
НАЙТИ КОНЕЦ
:ТРИ
ЭХО ВЫ НАЖАТИЛИ C
НАЙТИ КОНЕЦ
:ДВА
ЭХО ВЫ НАЖАТИЛИ B
НАЙТИ КОНЕЦ
:ОДИН
ЭХО ВЫ НАЖАТИЛИ
:КОНЕЦ
пауза 

CLS

Эта команда используется для очистки экрана консоли.

Пример:

 @ эхо ВЫКЛ.
CLS
пауза 

CMD

Эта пакетная команда вызывает новое окно командной строки.

Пример,

 @ эхо ВЫКЛ.
CMD 

КОМП

Пакетная команда COMP сравнивает размер двух файлов и проверяет, различаются ли они по размеру.

Пример:

 @ эхо ВЫКЛ.
КОМП C: \ data1.txt C: \ data2.txt 

ПРЕОБРАЗОВАТЕЛЬ

Пакет CONVERT передает команды томам или дискам из одного формата в другой i.е из FAT в NTFS.

Пример,

 @ эхо ВЫКЛ.
ПРЕОБРАЗОВАТЬ D: \ 

КОПИЯ

Команда COPY используется для копирования файлов из одного места в другое.

Синтаксис,

Копировать [источник] [место назначения]

Пример:

Ниже я копирую файл (Test.txt) с одного диска (D) на другой диск (E).

 КОПИЯ D: \ Test.txt E: \ 

ДАТА

Команда DATE отображает текущую дату системы.

Пример:

 @ эхо ВЫКЛ.
echo% DATE% 

ДИСКОВАЯ ЧАСТЬ

Пакетная команда DISKPART показывает свойства раздела диска.

Пример:

 @ эхо ВЫКЛ.
ДИСКОВАЯ ЧАСТЬ 

ЗАПРОС ВОДИТЕЛЯ

Эта пакетная команда отображает все установленные драйверы и их свойства.

Пример:

 @ эхо ВЫКЛ.
ЗАПРОС ВОДИТЕЛЯ 

DEL

Команда DEL используется для удаления файлов.

Синтаксис,

del [имя файла]

Пример:

  • Для удаления отдельного файла Test.txt.
 DEL D: \ Test.txt 

  • Удалите все файлы с расширениями .txt и запросите подтверждение перед удалением.
 DEL / p / s D: \ *. Txt 

  • Удалите все файлы с расширениями .txt и не запрашивайте подтверждение перед удалением.
 DEL / с D: \ *.txt 

DIR

Команда

DIR выводит список всего содержимого каталогов.

  • Вывести все содержимое текущего каталога.
 DIR 
  • Список всех файлов с расширением .txt.
 DIR * .txt 
  • Показывает только все скрытые файлы.
 DIR / ah 
  • Список файлов со скрытыми файлами.
 DIR / a 

ECHO

Команда ECHO используется для отображения сообщения на консоли или включения / выключения эхо-команд.

Пример:

 эхо Привет Aticleworld 

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

См. Например,

 @ эхо ВЫКЛ.
эхо Hello Aticleworld 

РАСШИРЯТЬ

Пакетная команда EXPAND извлекает содержимое сжатого файла.CAB-файл с кабинетными файлами.

Пример:

 @ эхо ВЫКЛ.
РАСШИРЯТЬ test.cab 

Этот сценарий извлечет все содержимое файла test.cab в то же место, где находится test.cab.

ВЫХОД

EXIT завершает работу и закрывает консоль.

Пример:

 @ эхо выкл.
эхо "Hello Aticleworld"
выход 

FC

Пакетная команда FC находит разницу между двумя файлами и отображает их на консоли.

Пример ,

 @ эхо ВЫКЛ.
FC D: \ test1.txt D: \ test2.txt 

НАЙТИ

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

Синтаксис:
найти [/ v] [/ c] [/ n] [/ i] [/ off [строка]] «строка» [[Диск:] [Путь] Имя файла]
Параметры
Параметр Описание
/ v Отображает все строки, которые не содержат указанный .
/ с Подсчитывает строки, содержащие указанный , и отображает итог.
/ п. Перед каждой строкой стоит номер строки файла.
/ i Указывает, что поиск не чувствителен к регистру.
[/ выкл. [Строка]] Не пропускает файлы с установленным атрибутом офлайн.
«» Обязательно. Задает группу символов (заключенную в кавычки), которую вы хотите найти.
[<привод>:] [] Задает расположение и имя файла, в котором нужно искать указанную строку.
/? Отображает справку в командной строке.

Пример:

Приведенный ниже сценарий будет искать строку «aticleworld» в файле my.txt. Если указанная строка существует в my.txt, она отобразит соответствующую строку.

 @ эхо ВЫКЛ.
НАЙТИ "aticleworld" мой.txt 

ФОРМАТ

Пакетная команда FORMAT используется для форматирования файловых систем, поддерживаемых Windows, таких как FAT 16/32 или NTFS.

Пример ,

Приведенный ниже сценарий отформатирует диск E.

 @ эхо ВЫКЛ.
ФОРМАТ E: \ 

СПРАВКА

Эта пакетная команда показывает список команд Windows.

IPCONFIG

Пакетная команда IPCONFIG отображает IP-конфигурацию Windows.

Пример:

 @ эхо ВЫКЛ.
IPCONFIG 

ТАБЛИЧКА

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

Пример:

 @ эхо ВЫКЛ.
ТАБЛИЧКА 

MD

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

Пример:

Приведенный ниже сценарий создаст новый каталог test в текущем рабочем месте.

 @ эхо ВЫКЛ.
MD тест 

БОЛЬШЕ

Эта пакетная команда отображает содержимое файла одно за другим.

Пример:

 @ эхо ВЫКЛ.
БОЛЬШЕ D: \ test.txt 

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

НЕТТО

Пакетная команда NET используется для многих сетевых функций в зависимости от используемых команд.

Синтаксис,

 НЕТТО [вариант] 

Где его варианты могут быть одним из следующих,

  • счета нетто.
  • чистый компьютер.
  • чистая конфигурация.
  • нетто продолжить.
  • net файл.
  • net group.
  • чистая помощь.
  • net helpmsg.
  • net localgroup.
  • сетевое имя.
  • чистая пауза.
  • чистая печать.
  • чистая отправка.
  • чистая сессия.
  • чистая акция.
  • чистый старт.
  • чистая статистика.
  • чистый стоп.
  • чистое время.
  • чистое использование.
  • чистый пользователь.
  • чистый вид.

ПИНГ

Эта пакетная команда используется для отправки пакетов ICMP / IP на указанный адрес по сети.

Пример:

Ниже скрипт отправит пакеты на адрес 127.0.1.1

 @ эхо ВЫКЛ.
ПИНГ 127.0.1.1 

Выход:

 Пинг 127.0.1.1 с 32 байтами данных:
Ответ от 127.0.1.1: байты = 32, время <1 мс TTL = 128
Ответ от 127.0.1.1: байты = 32, время <1 мс TTL = 128

Статистика пинга для 127.0.1.1:
Пакетов: отправлено = 4, принято = 4, потеряно = 0 (потеря 0%),
Приблизительное время в оба конца в миллисекундах:
Минимум = 0 мс, Максимум = 0 мс, Среднее значение = 0 мс 

ПЕРЕМЕЩЕНИЕ

Команда

MOVE перемещает файлы или каталоги между каталогами или переименовывает каталоги.

Синтаксис,

MOVE [источник] [пункт назначения]

Пример:

  • ход Тест.txt из dir1 в dir2.
 ПЕРЕМЕСТИТЬ D: \ dir1 \ Test.txt D: \ dir2 
  • Переименуйте каталог dir1 в dir2.
 ПЕРЕМЕСТИТЬ E: \ dir1 E: \ dir2 
  • Переименуйте fileTest.txt в Test1.txt.
 ПЕРЕМЕСТИТЬ E: \ Test.txt E: \ Test1.txt 
  • Переместить каталог dir1 из E: \ в E: \ Test.
 ПЕРЕМЕСТИТЬ E: \ dir1 E: \ Test \ 

ПАУЗА

Команда PAUSE используется для удержания экрана консоли до тех пор, пока пользователь не введет входное значение.

 @ эхо ВЫКЛ.
ECHO Привет, мир статей
пауза 

REM

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

Пример ,

 @ эхо ВЫКЛ.
REM Это комментарий 

REN

Пакетная команда REN используется для переименования файлов и каталогов.

Пример:

 @ эхо ВЫКЛ.
REM Чтобы переименовать x.php в y.php
REN C: \ Test1.C C: \ Test2.c 

НАБОР

Отображает, устанавливает или удаляет CMD.Переменные среды EXE. Если используется без параметров, set отображает текущие настройки переменных среды.

Пример:

 @ эхо ВЫКЛ.
НАБОР 

ВЫКЛЮЧЕНИЕ

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

Пример:

 @ эхо ВЫКЛ.
ВЫКЛЮЧЕНИЕ 

СОРТ

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

СТАРТ

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

Пример:

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

 @ эхо ВЫКЛ.
ЗАПУСК paint.exe 

СИСТЕМИНФО

Пакетная команда SYSTEMINFO отображает подробную информацию о конфигурации компьютера и его операционной системы, включая конфигурацию операционной системы, информацию о безопасности, идентификатор продукта и свойства оборудования (такие как ОЗУ, дисковое пространство и сетевые карты).

Пример:

 @ эхо ВЫКЛ.
SYSTEMINFO 

СПИСОК ЗАДАЧ

Команда TASKLIST отображает список запущенных в данный момент процессов на локальном или удаленном компьютере. Список задач заменяет инструмент tlist.

Пример:

 @ эхо ВЫКЛ.
СПИСОК ЗАДАЧ 

ВРЕМЯ

Пакетная команда TIME используется для отображения или установки системного времени. Если используется без параметров, время отображает текущее системное время и предлагает ввести новое время.

Пример:

 @ эхо ВЫКЛ.
ЭХО% ВРЕМЯ% 

Выход:

8: 47: 05.00

ТАЙМ-АУТ

Команда TIMEOUT используется для приостановки командного процессора на указанное количество секунд.

Пример:

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

 тайм-аут / т 10 

НАЗВАНИЕ

Пакетная команда TITLE устанавливает новый заголовок для консоли вывода.

Пример ,

 @ эхо ВЫКЛ.
НАЗВАНИЕ Aticleworld 

ДЕРЕВО

Команда tree отображает структуру каталогов пути или диска в приводе графически.

ТИП

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

Пример ,

Приведенный ниже сценарий отобразит все содержимое test.txt на консоли.

 @ эхо ВЫКЛ.
ТИП C: \ test.текст
Пауза
 

VER

Пакетная команда VER отображает номер версии операционной системы.

Примечание: Эта команда поддерживается в командной строке Windows (Cmd.exe), но не в PowerShell.

Пример:

 @ эхо ВЫКЛ.
VER
пауза 

ТОМ

Пакетная команда VOL отображает текущую метку тома Windows.

Пример,

 @ эхо ВЫКЛ.
VOL 

где

Команда where batch отображает расположение файлов, соответствующих заданному шаблону поиска.

Примеры,

Чтобы найти все файлы с именем «Test» на диске C текущего компьютера и его подкаталогах, введите. здесь / r для поиска в подкаталогах.

 где / r c: \ test 

XCOPY

Пакетная команда XCOPY похожа на команду COPY, но команда COPY копирует отдельный файл, тогда как команда XCOPY копирует целые каталоги, включая подкаталоги.

Пример:

Скрипт ниже скопирует test.txt с диска D на диск E.

 @ эхо ВЫКЛ.
XCOPY D: \ test.txt в E: \ 

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

.

В последнем я также постараюсь создать бесплатную электронную книгу команд пакетного скрипта (командный файл команд PDF) с его использованием.

Рекомендованных статей для вас:

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

- Обучение / Windows Shell

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

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

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

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


Имя и расположение пакетного файла

Имена командных файлов традиционно имеют расширение .bat (хотя можно также использовать .cmd ), который указывает Windows (по ассоциации расширения файла), что командный файл может быть запущен с оболочкой cmd .Другие расширения файлов, такие как .exe , также интерпретируются как исполняемые программы.

Соглашение об использовании расширений файлов для идентификации исполняемых программ отличается от Linux, где для файлов должны быть установлены права на выполнение, чтобы файл был исполняемым (или запустите, например, sh имя сценария ). Сценарии оболочки Linux не обязательно должны иметь расширение, например .sh или .bash и там расходятся во мнениях относительно того, является ли использование расширений для исполняемых программ наилучшей практикой.Однако в смешанной среде, такой как Cygwin, Git Bash, MinGW или другая система, где работает Linux в основной операционной системе Windows может быть полезно всегда использовать расширения файлов для сценариев Linux, чтобы избежать путаницы. Система контроля версий Git может хранить «исполняемый бит» для файла, указывая, что он является исполняемым, но это не относится к пакетным файлам, поскольку Windows смотрит на расширение файла.

По умолчанию для Проводник не показывает расширения файлов.Однако при выборе File Explorer View / File name extensions флажок показывает расширения файлов, что упрощает просмотр командных файлов в файловой системе.

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

Нечувствительность к корпусу

Операционная система Windows и программа cmd обычно не чувствительны к регистру, когда указание имен программ, команд и путей к файлам. Следовательно, чтобы перечислить каталоги, используйте DIR или dir . Это отличается от Linux, который обычно чувствителен к регистру.

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

Запуск командных файлов

Пакетные файлы можно запустить из командной строки cmd , щелкнув файл в File Explorer , или путем вызова из другого командного файла или программы.

При вызове командного файла из исполняемой программы, например программа на Java, Python или C #, обычно требуется вызвать программу cmd с именем командного файла в качестве аргумента. Большинство языков предоставляют библиотечные функции для вызова программ оболочки.

Если папка с пакетным файлом включена в переменную среды PATH , затем ввод имени командного файла в командной строке cmd с нашим без расширения .bat приведет к запуску командного файла. Пакетный файл также можно запустить, указав полный или относительный путь к пакетному файлу. В отличие от Linux, Windows запустит командный файл в текущей папке, даже если текущая папка (, ) не находится в PATH . В Linux, если . не указан в пути, тогда сценарий оболочки Linux может быть запущен с ./scriptname .

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

  @ эхо выкл.
rem Главный командный файл

вызов batchfile2.bat
  

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

Первая линия

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

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

  @ эхо выкл.
  

Основная точка входа в пакетный файл

Пакетный файл вводится в первой строке.Каждая команда обрабатывается по порядку, если только управляющие команды, такие как goto или другие блоки кода влияют на выполнение программы. В следующем примере показана типичная организация кода. Использование rem в начале строки (может иметь отступ) указывает, что строка является комментарием.

  @ эхо выкл.
rem ProgramName - краткое описание

установить версию = 1.0.0

rem Определите папку, в которой находится скрипт
rem - используется, чтобы все файлы могли относиться к местоположению
установить scriptFolder =% ~ dp0
rem Удалить завершающий \ из scriptFolder
установить scriptFolder =% scriptFolder: ~ 0, -1%
установить scriptName =% ~ nx0

rem Анализировать командную строку с использованием простого подхода
if "% 1%" == "/ h" перейти к printUsage
if "% 2%" == "/ h" перейти к printUsage

rem Вставьте сюда логику.rem Вызов функции, просто поставьте call впереди.
вызов: функция1 аргументы ...

rem Пример функции
: function1
rem Немного логики здесь
rem возврат из функции
выход / б 0

rem Использование программы печати
: printUsage
эхо.
echo Использование здесь ...
goto exit0

rem Окончательный выход
: exit0
выход / б 0
  

Комментарии в пакетных файлах используют оператор rem .

  • См. Документацию по заявлению rem

Следующие примеры иллюстрируют использование комментариев.

  @ эхо выкл.
rem Первый комментарий.
rem Второй комментарий.
   rem OK для отступа комментариев, например, в блоке 'if' или 'for'.
  
  • Можно делать отступ в комментариях, например, в блоках «если» или «для».
  • Некоторые программисты используют двойное двоеточие ( :: ) или другие недопустимые метки для начала комментариев. Хотя это работает и может быть более читаемым для некоторых программистов, использование rem рекомендуется для вставки комментариев.

Переменные

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

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

На значение переменной можно ссылаться, заключив имя переменной с % , как в следующем синтаксисе. В отличие от Linux, который использует $ в начале имени переменной или $ {name} , % требуется на обоих стороны переменной.

  установить s1 = строка1
установить s2 =% s1%
  

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

  setlocal EnableDelayedExpansion

установить s1 = string1
установить s2 =! s1!
  

Этикетки

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

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

  • См. Документацию по команде goto
  • См. Этикетку ведомость документации

Например:

  if "% x%" == "true" goto someLabel

: someLabel
rem Этот код что-то делает ...
  
  • Несколько меток обычно вставляются в код в важных логических точках.
  • Чтобы предотвратить попадание логики из одного блока кода метки в следующий блок кода, дополнительные инструкции goto необходимы для перехода по логике.
  • Полезно включать стандартные метки, такие как : exit0 для выхода с кодом 0 и : exit1 для выхода с кодом 1 .
  • Метки также используются для определения функций.

Встроенные команды и внешние программы

Термины «команда» и «программа» могут использоваться как синонимы и вызывать путаницу. Программа cmd , которая на самом деле является исполняемой программой с именем cmd.exe , ведет себя следующим образом:

  • включает встроенные команды (например,г., дирек )
  • языковых синтаксических элементов или «операторов» (например, , если )
  • может вызывать внешние программы путем поиска ПУТЬ , текущей папки и указанных путей к программам

Например, оператор if настолько важен для функциональности оболочки cmd , что он компилируется в программу. Команда dir является базовой и также скомпилирована в оболочку. Это можно проверить, запустив:

 > какой реж
'which' не распознается как внутренняя или внешняя команда,
действующая программа или командный файл
  

Напротив, программа taskmgr является внешней программой и при запуске из командной строки отображает диспетчер задач .

 > какой Taskmgr
C: \ Windows \ System32 \ Taskmgr.exe
  

Встроенные команды и операторы компилируются в программу cmd , тогда как внешние программы размещаются с помощью переменной среды PATH .

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

  • См. Документацию по выписке exit

Обычно используется код выхода 0 (ноль) для индикации успеха и 1 или другое ненулевое значение для индикации ошибки.Некоторые программы используют определенные значения кода ошибки для передачи типа ошибки вызывающему коду. Также полезно поместить один или несколько вариантов метки exit в конец командного файла, к которому можно перейти из логики. ( не использует метку с именем : exit , потому что это, кажется, сбивает оболочку cmd ). Ниже приведен пример использования exit :

.
  @ эхо выкл.
rem пример выхода

rem Немного логики здесь

если ... условие, вызывающее выход из программы... (
  rem Перейти в конец командного файла с кодом выхода 0
  goto exit0
)

rem Больше логики здесь

: exit0
rem Выйти из командного файла с кодом успеха
выход / б 0
  
  • Вышеупомянутый exit0 не может быть вызван как функция с использованием call: exit0 , потому что exit0 будет возвращаться только из функция, а не выход из командного файла.
  • Параметр / b обычно следует использовать, чтобы указать, что оболочка cmd , запускающая командный файл не должен сам выходить.

если Заявление

Оператор if выполняет условную обработку в пакетных файлах, чтобы можно было принимать логические решения. См .:

Типичный пример - сравнение значения строки с переменной и переход к другой точке командного файла. В следующем примере строка1 и строка2 являются буквальными строками. Их не нужно заключать в двойные кавычки.

  s1 = строка1 с пробелами
s2 = строка2

if "% s1%" == "% s2%" goto someLabel

: someLabel
rem сделать еще немного поработать...
  
  • Пробелы не допускаются ни с одной стороны от оператора условия == .
  • Если значение переменной может быть пустой строкой, используйте двойные кавычки, чтобы заключить переменную в убедитесь, что пустая строка не вызовет синтаксической ошибки; если сравнивается буквальная строка также заключите его в двойные кавычки. Двойные кавычки по существу рассматриваются как литералы в сравнении , если так что включите обе стороны сравнения.

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

  имя_файла = C: \ путь \ к \ файлу
если не существует "% fileName%" (
  echo Файл не существует:% fileName%
  goto exit1
)
  
  • Там должно быть пробелом перед ( и отсутствие пробела вызовет ошибку
  • команды внутри блока могут иметь отступ

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

  если "% x%" == "1" (
  rem Do логический блок 1
) еще (
    если "% x%" == "2" (
      rem Do логический блок 2
    )
  ) еще (
       rem Провалить дело
    )
  
  • синтаксис иначе, если не может быть использован ; вместо этого разделите на две строки с ) else ( в первой строке и , если ... ( в следующей строке
  • , потому что не поддерживается else if синтаксис (или elseif или elif ), сложные вложенные условия требуют большего количества вложенных уровней
  • the ) else ( в круглых скобках должно находиться в той же строке с пробелами, как показано
  • можно использовать несколько условий
  • командная оболочка будет обрабатывать многострочный код , если блокируется как одна команда; следовательно, операторы echo могут отображать несколько строк, а сообщения об ошибках могут отображаться происходят в любом месте блока, а не в конкретной строке

для Заявление

Оператор for обеспечивает возможность циклического перебора списка.

  • См. для получения документации по выписке

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

См. Полезные примеры пакетных файлов для конкретных примеров цикла для .

Использование для циклов часто требует использования SETLOCAL EnableDelayedExpansion , как описано в разделе Переменные , чтобы гарантировать правильность установки значений переменных.

В следующем примере выполняется поиск, установлено ли программное обеспечение QGIS в определенной папке в системе. (обычно например: C: \ Program Files \ QGIS 3.10 ), так что версия может быть обнаружена, с предпочтением последней версии.

  для %% G в (3,12 3,10 3,4) do (
  rem Установите локальную переменную, чтобы упростить понимание кода
  установить qgisVersion = %% G
  если существует "%% G: \ Program Files \ QGIS! qgisVersion! (
    установите targetQgisVersion =! qgisVersion!
    echo Обнаружена установка программного обеспечения QGIS для версии! targetQgisVersion !.goto runStandaloneQgis
  )
)
  
  • Специальный синтаксис переменных %% G используется для перебора переменной G .
  • Значения для перебора перечислены в скобках.
  • Опыт показал, что лучше оставить список в списке простым и расширять строки с пробелами и т. Д. В блок кода, следующий за для строки .
  • Пробелы в неправильных местах могут вызвать проблемы. Используйте синтаксис, аналогичный показанному в приведенном выше примере.

Функции

Функции реализованы в пакетных файлах на основе вызов команды , этикетка , и выйти из команды . Функции пакетного файла по своей концепции аналогичны функциям в сценариях оболочки Linux и других языках; однако синтаксис отличается.

В следующем примере example-function.bat показано, как функция может быть определена в пакетном файле.

  @ эхо выкл.

rem Пример использования функции

rem Название программы
установить scriptName =% ~ nx0

rem Файл журнала
установите logFile =% scriptName%.бревно
echo Файл журнала для программы% scriptName%>% logFile%

rem Вызов функции
call: logInfo Некоторое сообщение
call: logWarning "Другое сообщение"

goto exit0

: logInfo
rem Функция для вывода информационного сообщения в файл журнала
rem - требует, чтобы глобальная переменная logFile была установлена ​​в файл
rem - вывод всегда добавляется, поэтому перезапустите файл в другом месте
rem - вызываемые аргументы могут быть заключены в кавычки или нет
rem - выходные сообщения всегда заключаются в кавычки
rem повторить сообщение
echo INFO:% * >> "% logFIle%"
rem Возвращает статус, должен быть целым числом, необязательно, но может использоваться для обозначения успеха.выход / б 0

: logWarning
rem Функция для вывода предупреждающего сообщения в файл журнала
rem - требует, чтобы глобальная переменная logFile была установлена ​​в файл
rem - вывод всегда добавляется, поэтому перезапустите файл в другом месте
rem повторить сообщение
echo ПРЕДУПРЕЖДЕНИЕ:% * >> "% logFIle%"
rem Возвращает статус, должен быть целым числом, необязательно, но может использоваться для обозначения успеха.
выход / б 0

: exit0
rem Окончательный выход
выход / б 0
  

Результат выполнения вышеуказанного командного файла:

  Файл журнала для программы-примера.летучая мышь
ИНФОРМАЦИЯ: "Некоторое сообщение"
ВНИМАНИЕ: «Другое сообщение»
  
  • Функция объявлена ​​с меткой .
  • Функция вызывается с использованием синтаксиса call: label .
    • Параметры функции передаются после синтаксиса call: label .
  • Параметры внутри функции интерпретируются так, как если бы функция была вызвана как отдельный командный файл.
  • Функция возвращает целочисленный код выхода с помощью команды exit .В этом случае выход не означает выход из командного файла.

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

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

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

Альтернативное объяснение см. В разделе «Условное выполнение».

  dir & md folder1 и переименовать папку folder1 в основную папку
  

, следовательно, равно

  реж
md folder1
переименовать папку1 в основную папку
  

Многострочная замена для

  dir && md folder1 && переименовать папку1 mainfolder
  

будет

  реж
если не ошибка уровень 1 (
   md folder1
   если не ошибка уровень 1 (
      переименовать папку1 в основную папку
   )
)
  

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

Другие полезные темы о переполнении стека о errorlevel :

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

Пример:

  каталог "C: \ Users \% UserName%" / AD 2> nul || dir "% UserProfile%" / AD & echo Путь к профилю пользователя: "% UserProfile%"
  

Эта командная строка выполняется как:

  каталог "C: \ Users \% UserName%" / AD 2> nul
если errorlevel 1 каталог "% UserProfile%" / AD
echo Путь к профилю пользователя: "% UserProfile%"
  

Команда ECHO всегда выполняется независимо от результата выполнения первого DIR , тогда как второй DIR выполняется только в том случае, если первый DIR не работает, как в Windows XP, или папка профиля пользователя не находится на диске C: или нет в папке у юзеров у всех.

Необходимо использовать ( и ) при выполнении ECHO только в случае сбоя первого DIR после второго DIR независимо от результата второго DIR .

  каталог "C: \ Users \% UserName%" / AD 2> nul || (каталог "% UserProfile%" / AD & echo Путь к профилю пользователя: "% UserProfile%")
  

Эта командная строка выполняется как:

  каталог "C: \ Users \% UserName%" / AD 2> nul
если ошибка уровня 1 (
    каталог "% UserProfile%" / AD
    echo Путь к профилю пользователя: "% UserProfile%"
)
  

Ответ на третий вопрос см. В моем ответе на вопрос Как вызвать командный файл в родительской папке текущего командного файла? где я объяснил различия при запуске командного файла с помощью команды call или команды start или ни одной из этих двух команд из командного файла.

команд пакетного файла: пауза, удаление, спящий режим и многое другое - видео и стенограмма урока

Команда REM

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

REM *** Этот файл был написан Дэвидом 4 июня 2015 г. ***

Откройте Блокнот и создайте новый файл.Напишите команду REMark в первой строке и добавьте любой описательный текст, который хотите. Щелкните "Сохранить" или "Сохранить как". Сохраните файл в любом каталоге (например, «Мои документы», который уже должен существовать) и дайте ему любое имя (например, «MyFirstBatchFile»), но с расширением .cmd. Убедитесь, что в нижней части окна сохранения, где написано «кодировка», тип кодировки говорит «ASCI». Если не указано «ASCI», используйте стрелку раскрывающегося списка, чтобы выбрать «». ASCI '' из опций.

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

Команды PAUSE и SLEEP

Давайте немного изменим ситуацию, чтобы увидеть, что происходит.Откройте командный файл .cmd в Блокноте. В строке 2 сразу после команды REM введите команду PAUSE . Теперь ваш файл должен выглядеть примерно так:

REM *** Этот файл был написан Дэвидом 4 июня 2015 г. ***
PAUSE

Сохраните пакетный файл, переключитесь в Проводник и дважды щелкните пакет файл снова. На этот раз черный командный экран остается на месте. Это потому, что команда PAUSE говорит Windows: «Остановите выполнение командного файла и дождитесь, пока пользователь нажмет любую клавишу.''

Команда SLEEP работает аналогично команде PAUSE, за исключением того, что вместо ожидания, пока пользователь нажмет «любую клавишу», для команды SLEEP требуется параметр, указывающий, сколько секунд до перехода в спящий режим. Вернитесь к командному файлу в Блокноте и в строке 3 введите команду «SLEEP 10». Теперь ваш файл должен выглядеть так, как показано здесь:

REM *** Этот файл был написан Дэвидом 4 июня 2015 г. ***
PAUSE
SLEEP 10

Сохраните его, вернитесь в Проводник и дважды щелкните командный файл.На этот раз Windows выполнит все команды, вплоть до команды SLEEP, а затем экран остановится на десять секунд, прежде чем продолжить.

Команды TIMEOUT и DEL

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

REM *** Этот файл был написан Дэвидом 4 июня 2015 г. ***
PAUSE
TIMEOUT 10

В режиме SLEEP или TIMEOUT Windows будет ждать запрошенное количество секунд, прежде чем продолжить выполнение файла.

Вы можете спросить: «Я не понимаю! Все, что мы сделали, это создали командный файл с некоторыми замечаниями и поставили его на паузу или в спящий режим.Это мне действительно не помогает ''. Итак, давайте заставим наш командный файл сделать что-нибудь интересное.

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

DEL MySchedule.doc

удалит файл MySchedule.doc из вашего текущего каталога.

Команда DEL также принимает подстановочные знаки.Звездочка (*) означает любые символы. Знак вопроса (?) Означает любой символ. Будьте очень осторожны с этой командой; он удаляет файлы и не просит вас подтвердить, если вы этого не попросите. Другими словами, если команда была DEL * .doc, все документы MS Word с расширением .doc в этой папке будут удалены. Если команда была DEL * .doc *, все документы MS Word с расширениями .doc или .docx в этой папке будут удалены.

Итоги урока

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

  • REM , сокращение от примечания, и который является просто способом документирования вашего командного файла
  • ПАУЗА , которая говорит Windows: «Остановите выполнение командного файла и дождитесь, пока пользователь нажмет любую клавишу»
  • SLEEP , который работает так же, как команда PAUSE, за исключением того, что вместо ожидания, пока пользователь нажмет «любую клавишу», для команды SLEEP требуется параметр, указывающий, сколько секунд нужно спать
  • TIMEOUT , который заменяет команду SLEEP в некоторых версиях Windows; и
  • DEL , которая, по сути, представляет собой просто функцию, которая заставляет Windows автоматически удалять файлы за вас

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *