Оглавление:

Расширенный пакет: 12 шагов
Расширенный пакет: 12 шагов

Видео: Расширенный пакет: 12 шагов

Видео: Расширенный пакет: 12 шагов
Видео: Расширенный пакет Schools.by 2024, Июль
Anonim

но это нормально, просто используйте команду CD или CHDIR для смены каталога. Но в данном случае это не имеет особого значения. »,« Top »: 0,08480565371024736,« left »: 0,014285714285714285,« height »: 0,8586572438162544,« width »: 0,9357142857142857}]">

Расширенный пакет
Расширенный пакет
Расширенный пакет
Расширенный пакет
Расширенный пакет
Расширенный пакет

ПОЖАЛУЙСТА, НАПРАВЛЯЙТЕ ЛЮБЫЕ ВОПРОСЫ В МОЙ БЛОГ: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/ Я больше не посещаю инструкции, и вы получите более быстрое ответьте таким образом. Привет, ребята! Там Нгуен здесь. Это было давно, но теперь оно здесь! Я представляю вам следующую часть моих руководств по пакетной обработке! Вы, возможно, читали (а могли и не читали) мои другие инструкции: Основы пакетной обработки Немного более расширенная пакетная обработка Эта инструкция заимствует некоторые элементы из первых двух инструкций. А именно: ECHO CommandCD CommandDIR Command Если вы не читали два других, я предлагаю сразу просмотреть эти команды. Я подожду здесь. Хорошо! К концу этого руководства вы познакомитесь с: START CommandSET CommandIF CommandGOTO Commandand> и >> Parameters С помощью этих команд вы сможете создавать динамические пакетные файлы, которые могут изменяться в зависимости от ввода пользователя Итак, давайте откроем эту хорошую командную строку и приступим к работе! Выполнить -> cmd В качестве альтернативы вы можете перейти к: Пуск-> Программные файлы-> Стандартные-> Командная строка Мои объяснения в этом руководстве стали немного длинными, поэтому я разделил некоторые команды на более чем одну страницу в основном в эстетических целях; Мне нравилось видеть картинки во время чтения текста без необходимости прокручивать вверх и вниз. Эмпирическое правило просмотра изображений; Обычно после каждого фрагмента кода есть изображение. Наслаждайтесь!

Шаг 1: команда ПУСК

Команда ПУСК
Команда ПУСК
Команда ПУСК
Команда ПУСК
Команда ПУСК
Команда ПУСК
Команда ПУСК
Команда ПУСК

Команда START - прекрасная маленькая команда, которая запускает все! Это простая команда, которая поможет нам разогреться, прежде чем мы перейдем к более сложным командам. Параметры команды в точности такие, как вы думаете.

ЗАПУСТИТЕ ThingToBeStarted.exeДовольно просто

ЗАПУСК WMPlayer.exeВы можете не только ЗАПУСТИТЬ.exe, вы также можете ввести веб-сайт, и он откроется в вашем браузере по умолчанию.

НАЧАТЬ www. Instructables.comДовольно просто, а? Ok. Теперь перейдем к реальной сути команды Instructable: SET.

Шаг 2: команда SET - теория струн (1/4)

Команда SET - теория струн (1/4)
Команда SET - теория струн (1/4)
Команда SET - теория струн (1/4)
Команда SET - теория струн (1/4)

Команда SET: определитель переменной. Переменные. Амброзия разработчика. Переменные - это биты памяти, которые … эээ, переменные. Никаких IF или NOT по этому поводу! (смеется, извините). Ok! Итак, как этот ребенок работает? Очень просто, параметры команды SET следующие: SET VariableName = Variable ValueSET сам по себе создает строковые переменные.

SET TestVS = Строка тестовой переменной!В данном случае мы просто сохранили значение «Test Variable String!» в переменную TestVS. Ну, это все развлечения и игры, но как нам получить значение переменной? Мы используем%. Просто добавляем% вокруг имени переменной.

ECHO% TestVS%Хорошо, круто, а что еще он может?

Шаг 3: команда SET - мистер математик (2/4)

Команда SET - Мистер Математика (2/4)
Команда SET - Мистер Математика (2/4)
Команда SET - Мистер Математика (2/4)
Команда SET - Мистер Математика (2/4)
Команда SET - Мистер Математика (2/4)
Команда SET - Мистер Математика (2/4)

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

@ECHO OFFSET Test = 1ECHO% Test% SET Test =% Test% -1ECHO% Test% PAUSEОй, что случилось? Это должно было сработать! Подождите … что это за команды SET, создающие только строки? Да. Команда SET сама по себе создаст только строковую переменную, то есть создаст наиболее буквальную интерпретацию значения. Он не думает, что «1-1» равняется «0», он думает, что «1-1» равняется «1-1». Итак, как это изменить? Мы хотим, чтобы переменная не копировалась напрямую, а оценивалась. Это означает, что мы хотим превратить его из строки в выражение! Это очень простое изменение, просто добавьте / a к команде SET. Вот простой командный файл, чтобы увидеть его в действии, или вы можете просто ввести его в руководство по командной строке. Я предлагаю последнее; это намного быстрее, и код не слишком сложен, но если вам действительно нужен командный файл, вот он

@ECHO OFFSET / a Test = 2 + 2ECHO% Test% PAUSEФантастика! Он прекрасно это выразил. Теперь мы знаем, какие изменения нужно внести в наш math test.bat.

@ECHO OFFSET / a Test = 1ECHO% Test% SET / a Test =% Test% -1ECHO% Test% PAUSEOk. Так что давайте запустим! Отлично! Это сработало отлично! Но что дальше?

Шаг 4: Команда SET - ввод пользователя (3/4)

Команда SET - ввод пользователя (3/4)
Команда SET - ввод пользователя (3/4)
Команда SET - ввод пользователя (3/4)
Команда SET - ввод пользователя (3/4)
Команда SET - ввод пользователя (3/4)
Команда SET - ввод пользователя (3/4)

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

НАБОР / p UDefine =С параметром / p программа фактически приостанавливается и ожидает ввода пользователя. Но подождите, я не вижу параметра / a, означает ли это, что переменная является только строкой? Ну, вроде того. Параметр / p полностью отменяет параметр / a, и если вы попытаетесь это сделать, вы просто получите ошибку «Отсутствует операнд». Это означает, что переменная, определяемая пользователем, не сможет оценивать выражения. Итак, что же делать? Что ж, вот хитрый трюк, который, как я подумал, мы можем использовать. Команда SET не выполняет одновременное использование параметров / p и / a, правильно? Ну а как насчет последовательного использования параметров / a и / p? Аааа … хитрые сапоги

@ECHO OFFECHO Calculator Version 1.0ECHO. SET / p UDefine = SET / a UDefine =% UDefine% ECHO = ECHO% UDefine% ECHO. PAUSEХороший калькулятор. Если вы еще не догадались, {{{ECHO.}}} - это пустая строка. Разве это не круто?

Шаг 5: команда SET - больше, чем кажется на первый взгляд (4/4)

Команда SET - больше, чем кажется на первый взгляд (4/4)
Команда SET - больше, чем кажется на первый взгляд (4/4)
Команда SET - больше, чем кажется на первый взгляд (4/4)
Команда SET - больше, чем кажется на первый взгляд (4/4)
Команда SET - больше, чем кажется на первый взгляд (4/4)
Команда SET - больше, чем кажется на первый взгляд (4/4)

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

SET Test = Instructables% Test%Какая странная ошибка … в нем говорится, что команда "Instructables" не распознается, а не о том, что% Test% не имеет синтаксиса. Это означает, что DOS обрабатывает каждую переменную так, как если бы она была набрана вручную. Ну а что если

SET Test = START cmd.exe% Test%Потрясающие! Это сработало! DOS обрабатывает каждую переменную так, как если бы она была введена пользователем, и запускает ее соответствующим образом. Вот интересный код: (Просто скопируйте / вставьте; это немного утомительно.

@ECHO OffSET Variable1 = ECSET Variable2 = HSET Variable3 = O CSET Variable4 = ooSET Variable5 = l! ECHO% Variable1 %% Variable2 %% Variable3 %% Variable4 %% Variable5% ECHO.% Variable1 %% Variable3 %% Variable3 %% Variable3 %% Variable3 %% Variable2 %% % Variable5% ПаузаРазве это не здорово? Каждая переменная содержит две буквы всего сообщения (кроме Variable2), и при расстановке переменных по порядку каждая буква складывается и завершает всю команду ECHO Cool! Команда SET - одна из наиболее сложных и мощных команд Словарь DOS.

Шаг 6: Команда ЕСЛИ - все равны (1/2)

Команда ЕСЛИ - все равны (1/2)
Команда ЕСЛИ - все равны (1/2)
Команда ЕСЛИ - все равны (1/2)
Команда ЕСЛИ - все равны (1/2)
Команда ЕСЛИ - все равны (1/2)
Команда ЕСЛИ - все равны (1/2)

Классический условный операнд. Базовая, но, тем не менее, мощная. Для тех, кто никогда раньше не программировал, команда IF - это именно то, что она звучит. Если выражение в синтаксисе оказывается истинным (или НЕ истинным), то будет выполнена следующая последовательность команд. Основная командная строка выглядит так:

IF% variable1% ==% variable2% ECHO Эта часть выполняетсяили если у вас более одного синтаксиса

@ECHO OFFIF% variable1% ==% variable2% (ECHO Эта часть выполняется. ECHO Так и это.) ELSE (ECHO Если переменная 1 не & apost = переменная 2, это происходит. ECHO, и это тоже происходит.)Примечание. Необычное размещение скобок связано не с тем, что я не верю в организованный код, а потому, что, если они не находятся в этих местах, весь фрагмент IF не будет работать. Таким образом, если в вашем коде IF есть какая-либо ошибка, скорее всего, это из-за скобок. Чтобы запустить этот конкретный пакет, я фактически использовал саму командную строку, чтобы я мог установить переменные без необходимости редактировать несколько IfVariableTest.bat. раз.

Шаг 7: Команда ЕСЛИ - Но я больше, чем ты (2/2)

IF Command - Но я больше, чем вы (2/2)
IF Command - Но я больше, чем вы (2/2)
IF Command - Но я больше, чем вы (2/2)
IF Command - Но я больше, чем вы (2/2)
IF Command - Но я больше, чем вы (2/2)
IF Command - Но я больше, чем вы (2/2)

Хорошо, у вас есть хороший оператор IF и все такое, и проверка того, равны ли переменные или нет, - это хорошо и все такое, но не совсем соответствует требованиям. Я хочу, чтобы что-то произошло, если переменная 1 меньше другой переменной! Для тех из нас, программистов, я знаю, что это кажется простой задачей. Просто делай то, что делают все остальные языки программирования! Хорошо держи своих лошадей, ковбой. Не так быстро. Пакетный файл - это не просто обычный язык программирования. Как ни глупо это может показаться, "" не работает с пакетными файлами.

EQU - Равно - == NEQ - Не равно LSS - Меньше, чем GTR - Больше, чем LEQ - Меньше или равно ToGEQ - Больше или равноПросто поместите эти операнды вместо == Пример

IF 32 GTR 3 ECHO Это сработает

@ECHO OFFIF 32 GEQ 32 (ECHO 32 больше или равно 32) ELSE (ECHO 32 определенно равно 32) PAUSEIF 32 LSS 32 (ECHO 32 меньше 32? Я не думаю.) ИНАЧЕ (ECHO 32 есть Не менее 32. Конец рассказа.) ПАУЗА.

Шаг 8: команда GOTO

GOTO Command
GOTO Command
GOTO Command
GOTO Command
GOTO Command
GOTO Command

Команда GOTO. Он делает именно то, что говорит; он ПЕРЕХОДИТ К метке в сценарии пакетного файла. Чтобы использовать эту команду, вы должны сначала иметь метку на месте. Ярлыки выглядят так:

: Label1Это просто двоеточие перед последовательностью букв и / или цифр. Команда GOTO имеет следующую структуру.

GOTO Label1Это так просто! Если подумать, я не совсем уверен, почему я не поместил это в Slightly Advanced Batch. В любом случае эту команду можно использовать для повторения командного файла, просто GOTO метка, которая снова выполняет команду GOTO

@ECHO OFF: RepeatMeECHO Это будет повторяться, если вы не нажмете «CTRL-C» GOTO RepeatMeМежду прочим, командный файл говорит правду. CTRL-C - универсальная пауза и приглашение на завершение. CTRL-S - это просто пауза. Но закрытие окна тоже работает. GOTO также может пропустить или изменить порядок вашего кода.

GOTO TurnEOffGOTO MultipleGotoECHO Это ECHO будет пропущено.: MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO The EndGOTO END: 3ECHO Это будет отображаться первым GOTO 2: TurnEOff @ ECHO OFFGOTO MultipleGoto: 2ECHO Это второй код, хотя он и последний 1Приведенный выше код был запутанно структурирован, чтобы подчеркнуть способность GOTO «прыгать» в коде.

Шаг 9:> Параметр (1/2)

Пример реализации
Пример реализации

Параметр (1/2) "src =" https://content.instructables.com/ORIG/FBH/P5XV/F3JESWI8/FBHP5XVF3JESWI8-j.webp

Пример реализации
Пример реализации

Параметр (1/2) "src =" https://content.instructables.com/ORIG/FIX/9BXW/F3JESWI5/FIX9BXWF3JESWI5-j.webp

Пример реализации
Пример реализации

Параметр (1/2) "src =" https://content.instructables.com/ORIG/FHZ/92ZS/F3JESWI7/FHZ92ZSF3JESWI7-j.webp

Заключение: Заключительные примечания
Заключение: Заключительные примечания

Параметр (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (1/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Этот следующий бит на самом деле не« команда », а скорее добавленный синтаксис к другим Он принимает выходные данные определенной команды и может записать их в текстовый файл. Это легче объяснить, если вы сначала увидите его в действии. Его синтаксис:

Команда> Имя файлаХорошо, допустим, мы находимся в определенном каталоге. Затем мы используем команду DIR, которая, если вы прочитаете Основы пакетной обработки, вы узнаете, как показывает содержимое вашего текущего каталога.

C: / Users / Neo \> DIRОбычно выводит

Том на диске C - HP Серийный номер тома - BC7E-E26C Каталог C: / Users / Neo06 / 30/2007 11:14 AM. 2007-30-06 11:14 AM. 17.03 / 2007 18:41.idlerc02 / 19/2007 15:14 Контакты06 / 19/2007 22:44 Desktop06 / 29/2007 08:47 Документы06 / 19/2007 10:35 Загрузки02 / 19/2007 15:14 Избранное02 / 19 / 2007 15:14 Links05.12.2007 16:01 Music06 / 30/2007 01:20 Картинки04.07.2007 15:08 Сохраненные игры 19.02.2007 15:14 Поиски03.01.2007 07:23 PM 242, 947 Test Record.wma06 / 19/2007 10:39 Видео 18.06.2007 09:57 1, 324, 574 wp_screenprint_mc.pdf06 / 18/2007 09:59 73, 996, 533 wp_tshirt_full.mp4 4 Файл (ы) 75, 564, 054 байта 14 Директории 132, 927, 537, 152 байта свободноНо если мы добавим к нему> и

C: / Users / Neo / DIR> DIRContents.txtМы не получаем вывода, но вместо этого получаем совершенно новый текстовый файл с именем DIRContents.txt, в котором есть вывод! Круто! Но подождите, есть проблема! Я хочу иметь несколько выходов в одном файле, но мой> просто перезаписывает его, а не добавляет! Что мне делать?

Шаг 10: >> Параметр (2/2)

Параметр (2/2) "src =" https://content.instructables.com/ORIG/FG4/B58B/F3JESWIJ/FG4B58BF3JESWIJ-j.webp

Параметр (2/2) "src =" https://content.instructables.com/ORIG/F05/GZB1/F3JESWIK/F05GZB1F3JESWIK-j.webp

Параметр (2/2) "src =" https://content.instructables.com/ORIG/F93/Q7VS/F3JESWL2/F93Q7VSF3JESWL2-j.webp

Параметр (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Параметр (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">

Parameter (2/2) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} "> Я рад, что вы спросили. Вот для чего нужен параметр >>! >> аналогичен>, но вместо того, чтобы полностью перезаписывать указанный файл, мы добавляем к нему! Так что давайте попробуем.

DIR >> DIRContents.txtАккуратный! Сработало отлично! Так что ждите. Означает ли это, что я могу записать в текстовый файл все, что захочу? я хочу попробовать

Пакет - это круто> Awesome.txtКакие? Почему это не сработало? Это потому, что параметр записывает только выходные данные легитимных команд, а не просто все, что вы вводите. Но это проблема, которая просто решается. Помните, что параметры записывают вывод команд. Какая команда имеет выходные данные, которыми мы можем управлять? Команда ECHO

ECHO Batch Is Awesome> Awesome.txtECHO Я так рад, что знаю это. >> Awesome.txtУра! Помнить. >> добавляет вывод в следующую строку файла.

Шаг 11: Пример реализации

Ok. Итак, давайте все вместе! Вот несколько примеров кода, которые я сделал, в которых используются команды, которые я показал вам в этом руководстве. Этот код будет постоянно добавлять 1 к переменной и выводить результат на неопределенный срок.

@ECHO OFFSET / a num = 1: RepeatECHO% num% SET / a num =% num% + 1GOTO RepeatЭтот код запустит CMD.exe 5 раз

@ECHO OFFSET / a RepeatNum = 5: OpenIF% RepeatNum% == 0 GOTO EndSTART CMD.exeSET / a RepeatNum =% RepeatNum% -1GOTO Open: EndЭтот код создаст командный файл в папке C: / Users / Neo и запустит его.

@ECHO OFFCHDIR C: / Users / NeoECHO @ECHO OFF> Hello.batECHO ECHO Здравствуйте! >> Hello.batECHO ECHO Я & aposm на вашем диске C! >> Hello.batECHO PAUSE >> Hello.batC: / Users / Neo / Hello. batPauseЭто небольшая партия игры. Вы должны угадать число

@ECHO OFFSET / a GuessNum = 0SET / a Answer =% RANDOM% ECHO Угадай, о каком числе я думаю.:RetrySET / p Guess = IF% Guess% LSS% Answer% ECHO My Number is Higher. IF% Guess% GTR% Answer % ECHO Мое число меньше. IF% Guess% ==% Answer% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO Retry: ENDECHO Вы правы! Ответ был% Answer% ECHO. Потребовалось% GuessNum% Guesses. ECHO. PAUSE. А этот мне очень нравится. Однако, если вы не будете осторожны, это может довольно быстро выйти из-под контроля, в зависимости от возможностей вашего компьютера. Что делает этот файл, так это то, что он на неопределенное время создает нумерованные текстовые файлы в каталоге с именем lolnumbers. Каждый из этих текстовых файлов содержит DIR каталога lolnumbers. Дело в том, что каталог постоянно заполняется текстовыми файлами, поэтому каждый последующий текстовый файл больше предыдущего. Результатом этого является папка, общий размер которой становится все больше и больше каждую секунду.

@ECHO OFFSET / a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>% num%.txtSET / a num + = 1GOTO RestartЭто довольно простые коды. Поэкспериментируйте с ними сколько душе угодно.

Шаг 12: Заключение: заключительные примечания

Уф. Мы охватили чертовски много в этом руководстве. Этот, по сути, в 3 раза длиннее, чем мой предыдущий. Надеюсь, вам понравилось! Перед тем как уйти, сделайте несколько напоминаний. Помните: при УСТАНОВКЕ переменной никогда не ставьте пробел между переменной и ее значением. ДА:

SET переменная1 = значениеДополнительное пространство приведет к тому, что ваша переменная будет пустой.

SET переменная1 = значениеКроме того, несколько IF. Не забудьте правильно отформатировать скобки: ДА

ЕСЛИ 1 == 1 (ECHO One Equals One!) ELSE (ECHO Что-то не так с этой программой.)НЕТ

ЕСЛИ 1 == 1 (ECHO One Equals One!) ELSE (ECHO Что-то не так с этой программой.)Также есть встроенные переменные

% CD %% DATE %% TIME %% RANDOM%% CD% Расширяется до текущего каталога. По сути, путь за первым>% DATE% и% TIME% - это дата и время.% RANDOM% дает случайное число от 0 до 32767. Диапазон не может быть изменен, я не думаю. И это в основном все! Надеюсь, вам понравилось это руководство, я очень много над ним работал. Надеюсь, это компенсирует 10-месячное отсутствие. А теперь плохие новости. У меня будут проблемы с ответами на любые вопросы в ближайшие несколько месяцев, потому что я буду за пределами страны. Но если у вас есть вопрос, просто оставьте кому-нибудь комментарий. Если я получу доступ к компьютеру, я обязательно отвечу, но не думаю, что это будет необходимо; Instructables - это дружелюбное сообщество, и я уверен, что кто-то там поможет вам в вашем бедственном положении.

Рекомендуемые: